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

标签 ajax json jquery-1.5 jqxhr

我有一个数据类型设置为“json”的 $.ajax() 请求。服务器正在返回带有正确 mime 类型“application/json”的 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, textStatus, jqXHR, key);
    },
    function(jqXHR, textStatus, errorThrown) { 
        this.error(jqXHR, textStatus, errorThrown);
    }
);

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

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

最佳答案

我遇到了同样的问题。我返回一个字符串,因为它是根据异常制定的。例如。我在 Symfony2 项目中使用带有序列化到 json 的内核监听器。这对于正确的 REST header 是正确的。

不管怎样,只要解析它;这对我有用:

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

关于ajax - 为什么 jqXHR.responseText 返回字符串而不是 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5825465/

相关文章:

PHP 邮件总是给我 undefined index ,有帮助吗?

python - GitLab API - 如何获取存储库/项目文件和元数据?

php - 从 CURL JSON 响应 php 数组中获取特定值

jquery - 返回 jqXHR 对象的新 jQuery.ajax 方式的意义/用途/目的

javascript - JQuery 1.5 选择器错误

python - 解析在 Django 中使用 Ajax GET 方法发送的 json 对象

javascript - 获取 ajax 函数的值(非异步)

javascript - 如何在纯 JavaScript 和 AJAX 上访问本地 json 文件并加载包含内容的菜单?

java - HSSFCell 读取空错误?

jquery - 如何在asp.net代码隐藏中获取HiddenField值