使用 jQuery Ajax 函数时,在指定错误和成功处理程序时,您会期望指定的错误处理程序函数捕获无效文件和 404 错误,但由于某种原因我的代码没有。
代码:
// using jQuery 3.4.1
// this code has been taken from a larger function, but the issue can be replicated by pasting
// the following code into the JS Console.
var scriptPath = 'http://mywebserver.localhost/application/invalid.js';
jQuery.ajax( {
async: false,
type: 'GET',
url: scriptPath,
crossOrigin: false,
data: null,
global: false,
cache: true,
success: function() {
debugger;
// do some stuff
onResult();
},
error: function( jqXHR, textStatus, errorThrown ) {
debugger;
Lib.showNetworkErrorAlert( jqXHR, textStatus, errorThrown );
},
dataType: 'script'
} );
这导致:
未捕获的错误来自:~未知~
错误:未捕获的语法错误:意外的令牌“<”在: http://mywebserver.localhost/ ........ 行:1
澄清一下,我已经查看了那里的 SO 问题,但我发现的问题往往集中在错误的原因上。我知道错误'Unexpected token < in ...'是什么,它只是JS试图将目标解析为JS,而是给出了404错误html文件,所以第一个标签中的<触发了错误。
我试图找出和理解的是为什么会出现此错误而不是指定的正常错误处理程序。至少我会认为将 dataType 设置为 script 会使其实现更好的错误,嘿,这是一个 HTML 404 错误文件,而不是脚本。
非常感谢任何帮助和见解。
更新:这是 Dev Tools 中的 Network 选项卡,显示它正在返回 404。
呼如林
相关分类