2013-08-23 38 views
0

我遇到问题。我正在发送ajax请求,并根据点击链接获取正确结果的数据。当我点击不同的链接并请求结果反映该链接时。它保留了以前链接的价值。任何帮助将不胜感激。这是我正在做的。这里是我的Ajax调用如何刷新基于点击链接的ajax结果

$('body').on('click', 'button', function() { 
    $.ajax({ 
     url: fullUrl, 
     type: "GET", 
     dataType: "json", 
     ifModified: true, 
     success: onDataReceived, 
     error: onError//, 
     // data: data 
    }); 
}); 

现在,当我按一下按钮我得到正确的价值观是第一次,但是当我点击不同的链接改变的一个值的结果不会改变。就像缓存结果一样。我试着将缓存设置为false,清除浏览器缓存到现在可用。我在做什么错

我的成功功能是本

function onDataReceived(series) { 
    // Push the new data onto our existing data array 
    count = 0; 
    for (var prop in series) { 
     if (series.hasOwnProperty(prop)) 
      ++count; 
    } 
    for (i = 0; i < count; i++) { 
     if (!alreadyFetched[series[i].label]) { 
      data.push(series[i]); 
     } 
    } 

    $.plot("#placeholder", data, options); 
} 
+0

你确定你从服务器得到不同的反应? 'fullUrl'基于点击哪个按钮而改变?你不显示它是如何/在哪里定义的。所以,有了这些信息,我会说'fullUrl'对于每个调用都是一样的,这就是为什么你得到相同的响应。 –

+0

是的,我确定我从fullUrl获得了不同的值,我正在通过控制台观看网址以确保。 –

+0

那么也许这不是你的ajax代码,这是问题,但可能是成功事件。 –

回答

0

添加查询字符串的URL通常是当前时间,如:

var time= new Date().getTime(); 
var path = 'http://hostname.domain.com/api?time=' + time; 

这将确保该URL每次都有改变,因此理想情况下不会发生缓存

+0

现在它不会返回任何数据,因为url已被更改。另外,如果我将缓存设置为false,它会将值放在网址前面,但我仍然可以获取数据。所以我不认为这会解决我的问题,谢谢你的尝试。 –

+0

您在查询字符串中添加了时间参数吧? – Farhan

+0

我已经做到了,并将缓存设置为false。我遇到的问题是每次发送获取请求时,都会通过单击按钮来获取数据。如果再次单击它,则旧值将保留,新值将覆盖它。 –

0

本地缓存禁用
易“ est way并且也是最直观的方式,就是将cache: false参数添加到您的ajax调用中。

$('body').on('click','button',function() { 
     $.ajax({ 
      url: fullUrl, 
      type: "GET", 
      dataType: "json", 
      ifModified: true, 
      success: onDataReceived, 
      error: onError//, 
      // data: data, 
      cache: false 
     }); 

    }); 

它法尔汉说没有什么,但它的内部,所以可能更容易记住,也实在是方式更具有可读性,你要完成什么,所以,这将有助于在未来开发或自己,以图稍后再取出你的代码。
阅读更多关于jquery-ajax对象的信息:http://api.jquery.com/jQuery.ajax/
- Searh cache的页面。

全局高速缓存禁用
你也可以做到在全球范围内,整个页面,但我不会建议。

但如果你真的需要,把这个在页面加载事件:

$(document).ready(function(){ 
     $.ajaxSetup({ cache: false }); 
     // ... Other init code 
}); 

全球问题已经在这里问过:How to prevent a jQuery Ajax request from caching in Internet Explorer?

+0

我已经做了两个,它仍然是缓存。无法弄清楚发生了什么事。 –

+0

你使用什么浏览器?检查它的控制台/网络实用程序,查看请求的返回码。 如果它的缓存,即使在时间戳之后,它也不是缓存的浏览器。 –

+0

我使用的是Chrome,即Firefox。我不认为它缓存它只是在同一个地方重复json值。我想要做的是不得不用新数据绘制刷新。 –