【问题标题】:jQuery AJAX load Remote JavaScript catch errors?jQuery AJAX 加载远程 JavaScript 捕获错误?
【发布时间】:2011-12-21 02:13:35
【问题描述】:

我正在尝试通过 jQuery 的 .ajax() 函数加载外部 JavaScript 文件(尝试过 .getScript(),但它有同样的问题)。

根据文档和测试,当从远程源加载脚本时出现错误时,它不会触发错误事件,甚至不会触发任何全局 AJAX 事件。

据我所知,成功事件中唯一触发的事件。

我的问题是:如何检测远程脚本是否加载失败。

我无法更改远程脚本,但我可以检测它是否已加载。 (通过检查是否定义了变量)。

【问题讨论】:

  • 是否可以使用<script> 标签链接到外部 JavaScript 文件?或者在本地复制它以便您知道它会可用?
  • 当您说外部 javascript 时,您是指来自同一域的脚本还是不同域的脚本?如果它来自与同源策略不同的策略,则不允许您通过 ajax 加载它
  • @mblase75 我在脚本执行期间加载脚本,所以不能使用
  • @stratton 从另一个域加载。 jQuery 通过添加脚本标签来做到这一点。

标签: jquery ajax


【解决方案1】:

设置一段时间的Timeout,并在成功回调中取消超时。如果超时触发,那么您可以取消请求并重试和/或执行错误处理。

【讨论】:

    【解决方案2】:

    jQuery“有帮助”为您评估脚本。如果想避免这种情况,可以手动设置dataType

    $.ajax({
               url : '/foo'
        , dataType : 'text'
        ,  success : function(){ ... }
    });
    

    这将阻止 jQuery 评估脚本。然后你可以自己 eval 它,包裹在 try/catch 中。

    【讨论】:

    • 我发布此内容时没有提及 :)
    猜你喜欢
    • 1970-01-01
    • 2014-12-18
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-02
    • 2019-11-09
    相关资源
    最近更新 更多