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
Javascript 浏览器在页面重新加载时未调用新Ajax请求_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 浏览器在页面重新加载时未调用新Ajax请求

Javascript 浏览器在页面重新加载时未调用新Ajax请求,javascript,jquery,ajax,Javascript,Jquery,Ajax,我在Ajax请求中设置了不存储缓存的属性。我还将查询字符串作为参数添加到URL中,以调用新的Ajax请求。但每当我刷新页面时,我都会在页面上看到旧内容。我总是要硬刷新页面才能看到更新的内容。 请求头被正确地传递到浏览器,这是我在ajax属性中设置的。但是为什么我总是要努力刷新才能得到更新的内容呢。如何在页面刷新时加载新内容。我已经在下面粘贴了我的Ajax 设置属性的AJAX方法 $.ajaxPrefilter(function (options, originalOptions, jqX

我在Ajax请求中设置了不存储缓存的属性。我还将查询字符串作为参数添加到URL中,以调用新的Ajax请求。但每当我刷新页面时,我都会在页面上看到旧内容。我总是要硬刷新页面才能看到更新的内容。 请求头被正确地传递到浏览器,这是我在ajax属性中设置的。但是为什么我总是要努力刷新才能得到更新的内容呢。如何在页面刷新时加载新内容。我已经在下面粘贴了我的Ajax

设置属性的AJAX方法

    $.ajaxPrefilter(function (options, originalOptions, jqXHR) {
        if (options.type == 'POST') {
            options.url +=  '?' + Date.now();
        }
    });

    $.ajaxSetup({
        cache: false,
        headers: {
        'Cache-Control':'max-age=0, public'
        },
    });

我的JQuery

 $.ajax({
                            url: "/Configuration/TestPlan/GetUserList",
                            type: 'POST',
                            cache: false,
                            dataType: 'json',
                            // async :false,
                            beforeSend: function () {
                                //call pageloader 
                                showImageLoader();
                            },
                            data:jsonString,
                            contentType: "application/json; charset=utf-8",
                            success: function (data) {
From—“如果设置为false,将强制浏览器不缓存请求的页面。注意:将缓存设置为false将仅适用于HEAD和GET请求”——

所以我不认为缓存选项做了你认为的事情。因为这是一篇博文,所以唯一会影响缓存破坏的是您的一个小片段:

$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
        if (options.type == 'POST') {
            options.url +=  '?' + Date.now();
        }
    });
每次它发出请求时——该页面实际上正在被缓存。它只会创建一个新的Date.now()-然后在您创建一个新的Date.now()之前一直保存该url

因此,当您注释掉它时,调用的最后一个页面/数据被缓存,现在您注释掉了更新cachebuster的唯一内容

也许只需将缓存破坏直接应用于原始调用:

 $.ajax({
    url: "/Configuration/TestPlan/GetUserList?" + Date.now(),
    type: 'POST',
    cache: false,
    dataType: 'json',
    // async :false,
    beforeSend: function () {
    //call pageloader 
        showImageLoader();
    },
    data:jsonString,
    contentType: "application/json; charset=utf-8",
    success: function (data) {

如果您查看dev工具中的network选项卡-doyou:1。查看请求末尾的cachebuster,它是否每次都不同(由Date.now()生成的数字)?2.正在请求的数据-如果预览正在返回的数据(在“网络”选项卡中),它看起来是否正确?)Hi@RacilHilan。我的成功方法中有很多代码和逻辑。我不能粘贴所有的东西here@Kyle:是每次我刷新页面时数字都会更改。但每当我注释掉date.now并刷新页面时,“网络”选项卡仍会显示方法名称后面附加的date.now编号。是缓存的问题,还是我误解了,我的数据没有从缓存中返回?@RacilHilan我想你不明白这个问题。问题不在于我返回的数据不正确。问题是缓存,AJAX具有预定义的属性。我想验证我的缓存方法是否正确。好的,将
cache
属性设置为
false
很好。您不需要在
$内多次执行。ajax
只会影响该调用,而在
$内。ajaxSetup
会影响该页面上的所有调用。就这些。如果它真的只是关于缓存,那么你的问题不在你发布的代码中。试着看看哪一点不尊重兑现请求。所有这些都是不必要的。您在回答的开头引用了jQuery文档,这很好,但为什么要到此为止?完成以下句子:其他类型的请求不需要该参数<代码>POST请求不能由任何点缓存,因此OP需要调查哪个点有故障。至于您所谓的“缓存破坏”(我喜欢这个名称,这是正式的吗?),最好像jQuery那样将它分配给一个参数
'?\u='+Date.now()
。但同样,这是不必要的,因为jQuery已经在需要时这样做了。是的,“缓存破坏”是非常正式的,只要给它一个ol“google”,你就会明白我的意思:)嗨@Kyle,我正在做的是通过给url一个新的日期时间来添加一个唯一的标识符。但即使我注释掉日期时间。“网络”选项卡仍然在URL中显示参数,直到我硬刷新它为止。