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

时间:2011-09-20 19:50:07

标签: jquery ajax cakephp

使用对某些CakePHP函数的JQuery / AJAX调用将所有内容加载到我的页面中,并将响应HTML转储到容器DIV中。

在将新页面注入容器DIV之前,页面通常包含我想要POST的表单。当用户点击主页按钮时,将完成此POST。

表单数据通过POST发送到CakePHP函数,然后在die()之前保存数据并回显“保存完成”消息。然后在调用我的post函数后将主页加载到容器div中。

问题是,有时它并不总是保存我的表单数据。

有两种情况:

1 - 保存工作。响应代码为200.响应数据为“保存完成”

2 - 保存不起作用。响应代码(根据我的js函数)是200,因为我提醒它。但是,在这种情况下,Chrome表示响应为302.响应数据包含我的主页。我的cakephp代码在我发布的函数中没有重定向。

我的主页按钮:

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)
    });
}

TL; DR:

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

1 个答案:

答案 0 :(得分:0)

我将此参数添加到saveThisPage(),它现在似乎正在工作。我希望POST是异步的,因为它会在等待响应时减慢页面加载速度,但至少它的工作正常。

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