有没有一种方法可以指定一个 AJAX 发布到服务器的最大执行时间,这样如果服务器没有响应,那么继续尝试10秒,然后继续其余的代码?
Function doajaxPost(){
var returned_value="";
// #############I NEED THIS CODE TO TRY TO POST THE DATA TO THE SERVER AND KEEP
// #############TRYING FOR 10 SECONDS AND THEN CONTINUE WITH THE REST OF THE CODE.
jQuery.ajax({
url: 'ajaxhandler.php',
success: function (result) {
returned_value=result;
},
async: false
});
// ###################################################
alert(returned_value);
some other code
.
.
.
}
5条答案
按热度按时间sqyvllje1#
使用
timeout
:但是,
alert(returned_value);
将在调用后立即执行(不会等待调用完成)。2jcobegt2#
API文档讲述了如何设置“超时”。
http://api.jquery.com/jQuery.ajax/
虽然这里的其他答案都是正确的,但学习自己检查文档比只知道这个答案更有价值。
hgb9j2n63#
您可以为 AJAX 请求设置超时值。
timeout
为请求设置一个超时(毫秒)。这将覆盖任何用$.ajaxSetup()设置的全局超时。超时时间从调用$.ajax时开始;如果有其他几个请求正在进行,而浏览器没有可用的连接,则请求可能在发送之前超时。在jQuery 1.4.x及以下版本中,如果请求超时,XMLHttpRequest对象将处于无效状态;访问任何对象成员都可能抛出异常。2仅在Firefox 3.0+中,脚本和JSONP请求不能被超时取消;即使脚本在超时时段之后到达,脚本也将运行。
下面是一个例子:
neskvpey4#
为请求设置超时(毫秒)。这将覆盖使用
$.ajaxSetup()
设置的任何全局超时。超时时间段从发出$.ajax
调用时开始;如果有多个其他请求正在进行,而浏览器没有可用的连接,则请求可能在发送之前超时。在jQuery 1.4.x及以下版本中,如果请求超时,XMLHttpRequest
对象将处于无效状态;访问任何对象成员都可能抛出异常。2仅在Firefox 3.0+中,脚本和JSONP请求不能被超时取消;即使脚本在超时时段之后到达,脚本也将运行。x33g5p2x5#
希望这能帮助像我这样不完全精通JavaScript的人,或者更重要的是,不完全精通阅读jQuery文档的人。
我承认,我看过jQuery.Ajax docs,很容易就找到了讨论设置超时的部分:
类型:数量
为请求设置一个超时(毫秒)。值为0表示没有超时。这将覆盖用$. ajaxSetup()设置的任何全局超时。超时时间段从调用$. ajax时开始;如果其他几个请求正在进行中,并且浏览器没有可用的连接,则请求可能在发送之前超时。在jQuery 1.4.x及以下版本中,如果请求超时,XMLHttpRequest对象将处于无效状态;访问任何对象成员都可能抛出异常。仅在Firefox 3.0+中,脚本和JSONP请求不能通过超时取消;即使脚本在超时时段之后到达,脚本也将运行。
但是由于缺乏示例,我仍然不知道***如何***指定超时值。秘诀在文章的顶部,它是这样说的:
在JavaScript中,这转换为以下语法:
在上面的示例(指定
timeout
为0以禁用此请求的超时)中,每个键/值对(如文档中所述)在代码中显示为[key]: [value]