Jquery 如何根据单击的链接刷新ajax结果
我有个问题。我发送了一个ajax请求,根据单击的链接获取数据以加载正确的结果。当我单击其他链接并请求结果反映该链接时。它保留上一个链接中的值。任何帮助都将不胜感激。这是我正在做的。这是我的ajax电话Jquery 如何根据单击的链接刷新ajax结果,jquery,Jquery,我有个问题。我发送了一个ajax请求,根据单击的链接获取数据以加载正确的结果。当我单击其他链接并请求结果反映该链接时。它保留上一个链接中的值。任何帮助都将不胜感激。这是我正在做的。这是我的ajax电话 $('body').on('click', 'button', function () { $.ajax({ url: fullUrl, type: "GET", dataType: "json", ifModified: t
$('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);
}
函数onDataReceived(系列){
//将新数据推送到现有数据阵列上
计数=0;
用于(串联的var prop){
if(系列hasOwnProperty(道具))
++计数;
}
对于(i=0;i
将查询字符串添加到URL(通常为当前时间),如:
var time= new Date().getTime();
var path = 'http://hostname.domain.com/api?time=' + time;
这将确保URL每次都会更改,因此理想情况下不会发生缓存本地缓存禁用
最简单的方法,可能也是最直观的方法,是将
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
});
});
它完全按照Farhan所说的做,但它是内部的,因此可能更容易记住,而且它更易于阅读您正在尝试完成的内容,因此这将有助于下一个开发人员或您自己以后理解您的代码。在此处阅读有关jquery ajax对象的更多信息:
-搜索页面上的
缓存
全局缓存禁用你也可以在全球范围内,为整个页面,虽然我不建议这样做 但如果确实需要,请将其放入页面加载事件中:
$(document).ready(function(){
$.ajaxSetup({ cache: false });
// ... Other init code
});
在此之前曾提出过一个全局问题:您确定从服务器得到不同的响应吗?
fullUrl
是否会根据单击的按钮进行更改?您没有显示如何/在何处定义它。所以,有了这些小信息,我想说fullUrl
对于每个调用都是相同的,这就是为什么您会得到相同的响应。是的,我确定我从fullUrl得到了不同的值,我只是通过控制台查看url来确保。那么可能不是您的ajax代码,这就是问题所在,但可能是成功事件。现在它不会返回任何数据,因为url已更改。另外,如果我将cache设置为false,它将在url前面放置一个值,但我仍然会获取数据。所以我认为这不会解决我的问题,谢谢你的尝试。我已经这样做了,并将缓存设置为false。我遇到的问题是,每次发送get请求时,我都会通过单击按钮获取数据。如果我再次单击它,旧的值会保留下来,新的值会覆盖它。我两次都做了,它仍然在缓存。搞不清楚发生了什么。你在用什么浏览器?检查它的控制台/网络实用程序,查看请求的返回代码。如果是缓存,即使在时间戳之后,也不是浏览器在缓存。我使用的是chrome、ie和firefox。我不认为这是缓存,它只是在同一个地方重复json值。我要做的是用新数据绘制刷新图。首先,你从服务器得到正确的响应了吗?如果是,请与我们分享您的成功功能。