gpt4 book ai didi

jquery-1.9 - jQuery 1.9中的更改导致$ .ajax调用失败并出现语法错误

转载 作者:行者123 更新时间:2023-12-03 08:41:29 25 4
gpt4 key购买 nike

我正在进行REST DELETE调用,该调用返回204。在jQuery 1.8.3中,此方法有效,并命中了request.done回调。但是,如果我使用1.9,它将转到request.fail,在textStatus中出现parsererror,在errorThrown中出现“SyntaxError:输入意外结束”。

remove = function (complete) {
var self = this;
var request = $.ajax({
context: self,
url: "/v1/item/" + itemId,
dataType: "json",
type: "DELETE"
});
request.done(removeCallback);
request.fail(function (xhr, textStatus, errorThrown) {
alert(errorThrown);
});

},
任何人都知道1.9中发生了哪些更改会导致此操作失败,并且需要进行哪些更改才能修复它?
因此,回答我自己的问题实际上似乎是这个问题:
jQuery upgrade guide

jQuery.ajax returning a JSON result of an empty string

Prior to 1.9, an ajax call that expected a return data type of JSON or JSONP would consider a return value of an empty string to be a success case, but return a null to the success handler or promise. As of 1.9, an empty string returned for JSON data is considered to be malformed JSON (because it is); this will now throw an error. Use the error handler to catch such cases.


因此,如果删除dataType
dataType: "json",
它适用于jQuery 1.8.3和1.9。

最佳答案

HTTP 204响应不是一个空字符串:这意味着没有数据。这是一个valid response for delete and update operations

这看起来像bug introduced in JQuery 1.9

删除dataType属性可解决此问题的原因在于,将其设置为“json”时,JQuery尝试使用JSON.parse解析内容,结果失败。从票:

This won't fail with any other dataType than "json" because the regression is due to the re-alignment of parseJSON with native JSON.parse (throwing an exception for null/undefined values).



不要尝试通过statusCode属性为204添加处理程序的票证中建议的解决方法,因为该处理程序和错误处理程序都会被触发。可能的解决方案如下:
    $.ajax(url, {
type: "DELETE",
dataType: "json",
error: function (error) {
if (error.status === 204) {
// Success stuff
}
else {
// fail
}
}});

关于jquery-1.9 - jQuery 1.9中的更改导致$ .ajax调用失败并出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14468704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com