Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 如何根据单击的链接刷新ajax结果_Jquery - Fatal编程技术网

Jquery 如何根据单击的链接刷新ajax结果

Jquery 如何根据单击的链接刷新ajax结果,jquery,Jquery,我有个问题。我发送了一个ajax请求,根据单击的链接获取数据以加载正确的结果。当我单击其他链接并请求结果反映该链接时。它保留上一个链接中的值。任何帮助都将不胜感激。这是我正在做的。这是我的ajax电话 $('body').on('click', 'button', function () { $.ajax({ url: fullUrl, type: "GET", dataType: "json", ifModified: t

我有个问题。我发送了一个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);
}
函数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值。我要做的是用新数据绘制刷新图。首先,你从服务器得到正确的响应了吗?如果是,请与我们分享您的成功功能。