Ajax请求失败但状态码仍为200“OK”

10

我不确定这为什么会发生,但是我有一个简单的 Ajax 代码:

$.ajax({ url: "/javascript/testing.js"})
    .done(function(data){ console.log(data) })
    .fail(function(jqXHR, textStatus, errorThrown) {
         console.log(jqXHR);
    });

.fail() 在返回状态码为"OK"时被执行。同时,实际的合法数据也在responseText中。

为什么会发生这种情况?


返回javascript,@nullability我尝试尝试“application/script”,但它不起作用。 - Kivylius
你是否在全局某处有 ajaxSetup?如果是,请确保没有设置默认值会与此代码冲突,例如将 method 设置为 post - dgo
@user1167442,我唯一拥有的就是 $.ajaxSetup({cache: false}); - Kivylius
@user1167442 使用GET HTTP请求从服务器加载JavaScript文件,然后执行它。但我不想执行它。 - Kivylius
另外,根据你的示例 -> 你如何判断 fail 是否被执行。它们应该返回相同的东西。 - dgo
显示剩余9条评论
1个回答

13

如果您想解析JavaScript文件,则dataType应为script

$.ajax({ url: "/javascript/testing.js", dataType: "script" })
.done(function(data){ console.log(data) })
.fail(function(jqXHR, textStatus, errorThrown) {
     console.log(jqXHR);
});
如果你仍然遇到了“parserError”,那么你的“testing.js”文件可能存在问题。
如果你不想解析它,只想检索它,那么dataType应该是“text”。
$.ajax({ url: "/javascript/testing.js", dataType: "text" })

testing.js只是一个普通的JavaScript文件。我将内容替换为“test”,但仍然无法正常工作。 - Kivylius
只写 test 不是有效的 JavaScript。如果你想在不将其解析为 JavaScript 的情况下检索它,请将 dataType 设置为 text。我已经更新了我的答案以反映这一点。 - nullability

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接