【问题标题】:AJAX status code not the same as Chrome network console status codeAJAX 状态码与 Chrome 网络控制台状态码不同
【发布时间】:2011-09-20 19:50:06
【问题描述】:

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

通常该页面包含一个表单,我想在将新页面注入容器 DIV 之前发布该表单。当用户点击主页按钮时,此 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;博士:

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

【问题讨论】:

  • 我认为这是某种竞争条件,因为 POST(表单数据)和 GET(新页面)都紧随其后。就好像 POST 调用正在“接收”来自 GET 调用的响应一样。

标签: jquery ajax cakephp


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多