加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax – 为什么jqXHR.responseText返回字符串而不是JSON对象?

发布时间:2020-12-16 03:15:33 所属栏目:百科 来源:网络整理
导读:我有一个$ .ajax()请求,dataType设置为“json”。服务器返回带有“application / json”的正确MIME类型的JSON。然而在我的jqXHR对象的responseText总是一个字符串。我究竟做错了什么?这是它应该如何工作? 这是我打电话的方式: var options = { dataType:
我有一个$ .ajax()请求,dataType设置为“json”。服务器返回带有“application / json”的正确MIME类型的JSON。然而在我的jqXHR对象的responseText总是一个字符串。我究竟做错了什么?这是它应该如何工作?

这是我打电话的方式:

var options = { 
    dataType:'json',type: 'GET',url: "http://example.com/api/"
};

var key = "PassToCallback";

var jqXHRObject =  $.ajax(options).then(
    function(data,textStatus,jqXHR,key) {
        this.success(data,key);
    },function(jqXHR,errorThrown) { 
        this.error(jqXHR,errorThrown);
    }
);

console.log(jqXHRObject.getResponseHeader("content-type")); // application/json
console.log(typeof jqXHRObject.responseText); // string

所以我必须做一个$ .parseJSON(jqXHRObject.responseText)来获取一个实际的对象。这似乎不必要,因为$ .ajax()应该根据文档自动转换responseText。谢谢!

我有同样的问题。我返回一个字符串,因为它从一个异常。例如。我使用内核监听器序列化到我的Symfony2项目的json。这对于适当的REST标头是正确的。

无论如何,只是解析它;这对我工作:

$.ajaxSetup({
    "error": function(jqXHR,status,thrownError) {
        alert('error');
        var responseText = jQuery.parseJSON(jqXHR.responseText);
        console.log(responseText);
    }
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读