Ajax超时只工作一次

时间:2014-01-31 21:37:51

标签: jquery ajax

我正在编写一个页面,使用AJAX发出两个jQuery个请求,每个请求使用不同的服务器。但问题是每个请求都需要调用它自己的超时事件。似乎是上次AJAX请求触发的唯一超时事件。如果我只是在页面上执行单个请求,则超时有效,但如果我添加第二个请求,则第一个脚本的超时不起作用。

我已经花了几个小时搜索关于如何解决这个问题并取得成功。

以下是我的代码示例,可帮助您弄清楚我在说什么:

$(document).ready(function($) { // This goes in the fist script but I could not put the script tags
    function getData() {
        $.ajax({
        url: "urlpath",
        async: false,
        dataType: "jsonp",
        timeout: 4000,  // This timeout does not work when the second request is present
            success: function(parsed_json) {
                console.log("Success for the fist request");
            },
            error: function(request, status, err) {
            if (status == "timeout") {
                console.log("Timeout error for the first request");
            } else {
                console.log("Unknown error for the fist request");
            }
            }
        });
    });
$(document).ready(function() { // This goes in the second script
    $.ajax({
    url : "urlpath.json",
    dataType : "json",
    timeout: 8000, // This timeout does work
    success: function(parsed_json) {
    console.log(Success for the last request);
    },
    error: function(request, status, err) {
        if (status == "timeout") {
            console.log(Timeout reached for the last request);
        } else {
            console.log(Unknown error on the last request);
            }
        }
    });
});

欢迎任何帮助。非常感谢你。

1 个答案:

答案 0 :(得分:0)

你的第一个请求是jsonp,而不是json,所以你可能需要自己处理超时: jQuery ajax (jsonp) ignores a timeout and doesn't fire the error event