【问题标题】:Finding error line in jQuery .getScript function when there's a parsererror?出现解析器错误时在 jQuery .getScript 函数中查找错误行?
【发布时间】:2017-01-25 10:47:50
【问题描述】:

我经常使用 .getScript 加载一些动态生成的 javascript,有时加载的数据会导致解析器错误,例如,当一个字符串包含一个引号,然后在 javascript 中过早结束该字符串,从而破坏文件。

这是我的代码:

$.getScript(URL, function(data){
            scriptCallback(data);
}).fail(function(jqxhr, settings, exception){
    console.error('getScript fail! See below:');
    console.error(jqxhr);
    console.error(settings);
    console.error(exception);
});

当解析器错误发生时,我在控制台中得到这个输出:

getScript fail! See below:
An object with status 200 OK and responseText a great load of javascript
parsererror
SyntaxError: Unexpected identifier
   at eval (<anonymous>)
   at jquery-1.12.0.min.js:2
   at Function.globalEval (jquery-1.12.0.min.js:2)
   at text script (jquery-1.12.0.min.js:4)
   at Wb (jquery-1.12.0.min.js:4)
   at y (jquery-1.12.0.min.js:4)
   at XMLHttpRequest.c (jquery-1.12.0.min.js:4)

但是,这实际上并不能帮助我找出错误发生在脚本文件中的何处。我只是希望能够单击它加载的脚本文件的内容并查看错误在哪里,就像在页面上的 javascript 或加载的文件中一样。

这不可能吗?

谢谢。

【问题讨论】:

    标签: jquery ajax error-handling get getscript


    【解决方案1】:

    仔细检查,然后再三检查您尝试使用 getScript 加载的代码。在我的例子中,我有一个很长的 SQL 语句被传递到一个 AJAX 后置参数中,因此为了便于阅读,我将语句拆分成几行并连接在一起。 IDE 没有错误,但 getScript 总是返回 parseError 或 SyntaxError...事实上,您无法确定问题所在的代码行实际上是在告诉您没有执行任何操作 - parseError 表示没有运行任何内容;在执行任何操作之前,目标 JavaScript 的解析失败。

    【讨论】:

      【解决方案2】:

      错误通常发生在 anonymous 旁边的 js 文件中。

      在你的情况下是 eval

      所以点击它eval,它会带你到错误所在的行。

      【讨论】:

      • eval 不是链接,无法点击。有什么办法可以让它变成可点击的吗?
      • 然后看到右侧的SyntaxError: Unexpected identifier会有一个链接点击它。如果这不起作用,请提供您的错误快照。
      猜你喜欢
      • 1970-01-01
      • 2011-01-19
      • 1970-01-01
      • 2014-08-12
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多