【问题标题】:Add a timeout to getScript()为 getScript() 添加超时
【发布时间】:2015-10-22 01:56:18
【问题描述】:

我正在使用getScript() JQuery 方法,但实际上可以添加超时。一些脚本在 6-8 秒内没有返回失败,这太长了。

这可能吗?

我进行了一些搜索,但没有找到解决方案。

类似:

$.getScript(a + "/myspeed/MySpeedServer/mss/js")
        .done(function() {
            //do stuff
        })
         .fail(function() {
            //do stuff
        });
         .timeout(2000)

【问题讨论】:

    标签: javascript jquery ajax timeout getscript


    【解决方案1】:

    $.getScript 只是$.ajax() 的包装。因此,您可以将$.ajax()timeout 选项一起使用,如下所示。

    $.ajax({
        url: url,
        dataType: "script",
        timeout: 2 * 1000
    }).done(function() {
        //do stuff
    })
    .fail(function() {
        //do stuff
    });
    

    the doc 的注释:仅在 Firefox 3.0+ 中,脚本和 JSONP 请求不能通过超时取消;即使在超时期限之后到达,脚本也会运行。

    您也可以将abort() 方法用作stated here

    【讨论】:

    • 请注意,文档有一些警告,并非所有浏览器都会尊重 timeout 的脚本
    【解决方案2】:

    由于getScript 不接受超时选项。 您可以使用ajaxSetup 方法设置全局超时。

    如果全局超时不适用,您可以使用

    $.get({
      url: a + "/myspeed/MySpeedServer/mss/js",
      timeout: 5000, // 5 seconds
      dataType: "script"
    });
    

    【讨论】:

      猜你喜欢
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 2012-02-22
      • 2013-01-14
      • 1970-01-01
      相关资源
      最近更新 更多