小编典典

当HTTP状态代码为“ 200 OK”时,为什么$ .ajax调用json数据会触发错误回调?

ajax

我有以下ajax请求:

        jQuery.ajax({
            async: true,
            type: "GET",
            url: url,
            data: data,
            dataType: "json",
            success: function(results){
                currentData = results;
            },
            error: function(xhr, ajaxOptions, thrownError){
                if (xhr.status == 200) {
                    console.debug("Error code 200");
                }
                else {
                    currentData = {};
                    displayAjaxError(xhr.status);
                }
            }
        });

由于某种原因,错误的回调被称为事件,尽管http状态代码为200,即。该请求是可以的。为什么是这样?


阅读 246

收藏
2020-07-26

共1个答案

小编典典

问题可能是从网址返回的json数据格式错误。当服务器实际返回内容时,http状态代码为200。但这并不意味着数据是正确的json。检查返回的字符串化json数据格式正确。

我要回答自己的邀请,因为我是很难学到的。我没有在json数据中转义“-”引号字符。这导致了非常奇怪的行为。幸运的是,双引号字符几乎是唯一需要从JSON传递的数据中转义的字符。

2020-07-26