如何使JQuery.ajax与超时同步?

时间:2011-02-18 22:57:43

标签: jquery

我有一个包含服务器上数据的日历。当用户向前移动一个月时,我可能(基于之前的操作)需要在我显示该月之前获取该数据。

我的代码处理失败(404),但我不能让它处理超时,因为调用是同步的。我知道当.ajax调用是同步时忽略超时,我想知道的是如何围绕异步调用进行同步等待?我想要正确处理超时,但缺少自旋循环,我不知道如何在javascript中优雅地执行此操作。

我在页面上有一个模态对话框来停止点击,我只需要让用户回来,直到我可以渲染下个月,或者如果发生超时,以防止他们移动到那个月,因为那里的数据月份无效。

我不太清楚jquery代码是如何解决这个问题的......

2 个答案:

答案 0 :(得分:0)

我认为您希望屏幕锁定,直到成功或失败。听起来你想让AJAX调用aysnch并使用JQuery AJAX注册回调函数(例如,on error事件):

  

错误(jqXHR,textStatus,   errorThrown)Function一个函数   如果请求失败则调用。该   函数接收三个参数:   jqXHR(在jQuery 1.4.x中,   XMLHttpRequest)对象,一个字符串   描述错误的类型   发生了和一个可选的例外   对象,如果发生了一个。可能   第二个参数的值   (除了null)是“超时”,“错误”,   “abort”和“parsererror”。这是个   Ajax事件。截至jQuery 1.5,   错误设置可以接受数组   功能。每个功能都是   反过来叫。注意:这个处理程序是   没有要求跨域脚本和   JSONP请求。

答案 1 :(得分:0)

基于我对你的问题的理解,听起来你应该能够通过嵌套AJAX调用解决这个问题,这样第二个调用就不会触发,直到对第一个调用的响应回来:

$.get('first.php',
    function(firstresponse){
        // do stuff with first response as needed

        $.get('second.php',
            function(secondresponse){
                // do stuff with second response as needed
            }

        );
    }
);