如何使用jQuery设置 AJAX post的最大执行时间?

ars1skjm  于 2023-01-30  发布在  jQuery
关注(0)|答案(5)|浏览(200)

有没有一种方法可以指定一个 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
    .
    .
    .           
 }
sqyvllje

sqyvllje1#

使用timeout

jQuery.ajax({
    url: 'ajaxhandler.php',
    success: function (result) {                               
        returned_value=result;
    },
    timeout: 10000,
    async: false
});

但是,alert(returned_value);将在调用后立即执行(不会等待调用完成)。

2jcobegt

2jcobegt2#

API文档讲述了如何设置“超时”。
http://api.jquery.com/jQuery.ajax/
虽然这里的其他答案都是正确的,但学习自己检查文档比只知道这个答案更有价值。

hgb9j2n6

hgb9j2n63#

您可以为 AJAX 请求设置超时值。
timeout
为请求设置一个超时(毫秒)。这将覆盖任何用$.ajaxSetup()设置的全局超时。超时时间从调用$.ajax时开始;如果有其他几个请求正在进行,而浏览器没有可用的连接,则请求可能在发送之前超时。在jQuery 1.4.x及以下版本中,如果请求超时,XMLHttpRequest对象将处于无效状态;访问任何对象成员都可能抛出异常。2仅在Firefox 3.0+中,脚本和JSONP请求不能被超时取消;即使脚本在超时时段之后到达,脚本也将运行。
下面是一个例子:

$.ajax({
   url: "ajaxhandler.php",
   ...
   timeout: 10000,
   ... 
});
neskvpey

neskvpey4#

为请求设置超时(毫秒)。这将覆盖使用$.ajaxSetup()设置的任何全局超时。超时时间段从发出$.ajax调用时开始;如果有多个其他请求正在进行,而浏览器没有可用的连接,则请求可能在发送之前超时。在jQuery 1.4.x及以下版本中,如果请求超时,XMLHttpRequest对象将处于无效状态;访问任何对象成员都可能抛出异常。2仅在Firefox 3.0+中,脚本和JSONP请求不能被超时取消;即使脚本在超时时段之后到达,脚本也将运行。

x33g5p2x

x33g5p2x5#

希望这能帮助像我这样不完全精通JavaScript的人,或者更重要的是,不完全精通阅读jQuery文档的人。
我承认,我看过jQuery.Ajax docs,很容易就找到了讨论设置超时的部分:

    • 超时**

类型:数量
为请求设置一个超时(毫秒)。值为0表示没有超时。这将覆盖用$. ajaxSetup()设置的任何全局超时。超时时间段从调用$. ajax时开始;如果其他几个请求正在进行中,并且浏览器没有可用的连接,则请求可能在发送之前超时。在jQuery 1.4.x及以下版本中,如果请求超时,XMLHttpRequest对象将处于无效状态;访问任何对象成员都可能抛出异常。仅在Firefox 3.0+中,脚本和JSONP请求不能通过超时取消;即使脚本在超时时段之后到达,脚本也将运行。
但是由于缺乏示例,我仍然不知道***如何***指定超时值。秘诀在文章的顶部,它是这样说的:

在JavaScript中,这转换为以下语法:

$.ajax({
   url: "https://example.com/my-endpoint",
   ...
   timeout: 0,
   ... 
});

在上面的示例(指定timeout为0以禁用此请求的超时)中,每个键/值对(如文档中所述)在代码中显示为[key]: [value]

相关问题