当前位置: 首页 > 面试题库 >

处理jQuery.getScript中的错误

和弘博
2023-03-14
问题内容

jQuery的getScript函数似乎不支持错误回调函数。我不能在这里使用全局ajax错误处理代码,局部错误功能将是理想的选择。

回调获取data / textStatus的文档似乎不正确-回调均不获取。

关于如何检测到对getScript的调用失败的任何建议(例如,服务器不可用)?

编辑:仅查看源代码,似乎回调仅在成功时才调用,数据始终设置为null且未定义textStatus(因为我认为这是仅成功的回调)。该文档对于此功能非常不正确。


问题答案:

这有点hack,但是..

您可以在加载的脚本中声明一个变量,并在加载脚本后对其进行检查(假设完整功能仍会触发):

script_test.js:

var script_test = true;

然后:

$.getScript("script_test.js", function ()
{
    if (typeof script_test !== undefined) alert("script has been loaded!");
});

或者,您可以尝试查看脚本中是否真正存在函数,变量,对象等

。更通用的方法是在要加载的脚本中添加自执行函数,然后使它们在您的“主要”脚本中执行功能:

main_script.js:

function scriptLoaded(scriptName)
{
    alert(scriptName + " loaded!");
}

$.getScript("script_test.js");

script_test.js:

(function ()
{
    scriptLoaded("script_test.js");
})();


 类似资料:
  • 描述 (Description) jQuery.getScript( url, [callback] )方法使用HTTP GET请求加载并执行JavaScript文件。 该方法返回XMLHttpRequest对象。 语法 (Syntax) 以下是使用此方法的简单语法 - <i>$</i>.getScript( url, [callback] ) 参数 (Parameters) 以下是此方法使用的

  • 问题内容: 解析器不知道要做什么时的默认行为是将消息打印到终端,例如: 第1:23行在“}”处缺少DECIMAL 这是一个很好的信息,但是在错误的位置。我宁愿将此作为例外。 我尝试使用,但是会抛出一个没有消息的消息(由引起,也没有消息)。 有什么办法可以让我通过异常报告错误,同时又保留消息中的有用信息? 这就是我真正想要的—我通常在规则中使用动作来构建对象: 然后,当我调用解析器时,我将执行以下操

  • 问题内容: 我有一系列要解决的承诺 我继续继续诺言链。看起来像这样 我想添加一个catch语句来处理单个promise,以防万一出错,但是当我尝试时,返回它发现的第一个错误(忽略其余的),然后我无法从其余的promise中获取数据数组(没有错误)。 我尝试做类似.. 但这并不能解决。 谢谢! - 编辑: 下面的答案完全正确,但代码由于其他原因而中断。如果有人感兴趣,这就是我最终得到的解决方案… 节

  • 问题内容: 有没有一种方法来处理错误,比如,你可以在使用块,等等? 我已经在网上搜索过,发现的唯一选择是global变量,但是它没有按我预期的那样工作,例如,以下代码: 确实会以某种方式回滚,因为我在table1上更改的名称保留了我在此处进行测试时的旧值,但是它不会打印消息,也不会执行我在导致错误的指令之后放置的任何指令 有人可以帮我吗?您知道Sybase错误处理是如何工作的吗? 问题答案: 第一

  • Ansible 通常默认会确保检测模块和命令的返回码并且会快速失败 – 专注于一个错误除非你另作打算. 有时一条命令会返回 0 但那不是报错.有时命令不会总是报告它 ‘改变’ 了远程系统.本章节描述了 如何将 Ansible 处理输出结果和错误处理的默认行为改变成你想要的. 忽略错误的命令 New in version 0.6. 通常情况下, 当出现失败时 Ansible 会停止在宿主机上执行.有

  • 问题内容: 我正在使用Restify和Mongoose创建一个API ,而这两个都是我的新手。我似乎无法找出正确的方法来处理Mongoose / Node中的错误。 到目前为止,我正在尝试执行以下操作: 我正在尝试为此调用GET(针对不存在的用户)。而不是发送回简单的错误消息,而是导致整个节点应用程序失败。我对return next(err)的用户以及应该怎么做感到困惑。 任何帮助是极大的赞赏。