如何使用自己的转换器保持jQuery jqXHR.responseJSON?

时间:2018-01-12 15:56:20

标签: jquery ajax converter

对于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,但在我的情况下没有转换器。

1 个答案:

答案 0 :(得分:1)

也许jqXHR.responseJSON尚未初始化。如果转换器(function (stringData))由于some modification代码错误而没有完成其执行,并且return json未执行,则会发生这种情况。