我有一个包含服务器上数据的日历。当用户向前移动一个月时,我可能(基于之前的操作)需要在我显示该月之前获取该数据。
我的代码处理失败(404),但我不能让它处理超时,因为调用是同步的。我知道当.ajax调用是同步时忽略超时,我想知道的是如何围绕异步调用进行同步等待?我想要正确处理超时,但缺少自旋循环,我不知道如何在javascript中优雅地执行此操作。
我在页面上有一个模态对话框来停止点击,我只需要让用户回来,直到我可以渲染下个月,或者如果发生超时,以防止他们移动到那个月,因为那里的数据月份无效。
我不太清楚jquery代码是如何解决这个问题的......
答案 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
}
);
}
);