AJAX状态码与Chrome网络控制台状态码不同

3
所有内容都是通过JQuery / AJAX调用一些CakePHP函数并将响应HTML转储到容器DIV中加载到我的页面中的。
通常,页面包含一个表单,我希望在将新页面注入容器DIV之前进行POST。当用户点击主页按钮时,会执行此POST。
表单数据通过POST发送到CakePHP函数,然后保存数据并回显“保存完成”消息,最后die(),然后在调用我的post函数后将主页加载到容器div中。
问题是,有时它不会始终保存我的表单数据。
有两种情况:
1-save有效。响应代码为200。响应数据为“保存完成”
2-保存失败。响应代码(根据我的js函数)为200,因为我弹出了它。但是,在这种情况下,Chrome说响应是302。响应数据包含我的主页。我正在POST到的函数中没有重定向。
我的主页按钮:
function ajaxLoad(url) {

    saveThisPage();


    $.ajaxSetup ({// Disable caching of AJAX responses      
        cache: false
    });

    $('#content').load(url, function(response, status, xhr));

    return false;
}

saveThisPage =function() {
    var roc_data = $("#CustomerRocForm").serialize()
    var roc_url = '/customers/roc'

    $.ajaxSetup ({      
        cache: false
    });

    $.post(roc_url, roc_data, function(roc_response, roc_status, roc_xhr) { 
        alert(roc_xhr.status)
    });
}

简而言之:

用户点击主页按钮。这会在当前页面上发布表单,然后将主页加载到容器div中。表单提交POST有时会返回302。


我认为这是一种竞态条件,因为POST(表单数据)和GET(新页面)紧随其后。就好像POST调用正在“接收”紧随其后的GET调用的响应一样。 - eSentrik
1个回答

0

我已经将这个参数添加到saveThisPage()函数中,目前看起来它正在工作。虽然等待响应时会减慢页面加载速度,但我更喜欢使用异步POST方式。不过至少现在它能正常工作了。

$.ajaxSetup ({      
    cache: false,
    async: false
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接