对于jQuery 3.2.1我在ajax错误中有responseJSON
$(document).ajaxError(function (event, jqXHR, options, jsExc) {
alert(jqXHR.responseJSON);
})
但是当我添加自定义转换器
时$.ajaxSetup({
converters: {
"text json": function (stringData) {
var json = JSON.parse(stringData);
... // some modification
return json;
});
}
});
jqXHR.responseJSON
变为未定义(但jqXHR.responseText
存在)。所以转换器jQuery没有
评估jqXHR.responseJSON = JSON.parse(jqXHR.responseText)
。
是否可以强制他们执行此操作,以便在转换器配置时在jqXHR.responseJSON
回调中获得ajaxError
?
BTW:根据jquery ajax does not parse json on failure,如果错误jQuery没有将responseText
转换为responseJSON
,但在我的情况下没有转换器。
答案 0 :(得分:1)
也许jqXHR.responseJSON
尚未初始化。如果转换器(function (stringData)
)由于some modification
代码错误而没有完成其执行,并且return json
未执行,则会发生这种情况。