【问题标题】:Why do I need to parse JSON object from jQuery.get()?为什么我需要从 jQuery.get() 解析 JSON 对象?
【发布时间】:2016-09-02 04:11:00
【问题描述】:

在我的 javascript 中,我有一个 jQuery ajax 获取请求:

    $.get(uri, callback_function, 'json');  

在firebug中,我可以看到响应头:

 Content-Type   application/json 

回复内容:

{ "status": true, "data": "my test output" }    

Net -> XHR 中甚至还有一个 JSON 选项卡,它显示返回的数据打印得非常漂亮。

但是,为什么我需要在我的回调函数中解析我得到的数据?

function callback_function(data) {
    console.log(data); // { "status": true, "data": "my test output" } 
                                    //  (printed in black)
    console.log(data.status); // undefined
    var parsedData = JSON.parse(data);   // why is this needed?? 
    console.log(parsedData); //  Object { status=true, data="my test output"} 
                                                //  (printed in colours)
    console.log(parsedData.status); // true
}

来自文档:
https://api.jquery.com/jQuery.get/
jQuery.get( url [, data ] [, success ] [, dataType ] )
数据类型:字符串 服务器预期的数据类型。默认值:智能猜测(xml、json、脚本、文本、html)。

既然我既期待又得到一个 JSON 对象(请参阅 HTTP 响应标头),为什么我需要解析看起来只是字符串的内容?

【问题讨论】:

  • 好问题。 jQuery 应该会自动为您执行此操作。需要明确的是:JSON 需要被解析,因为它只是文本,但是如果内容类型正确,jQuery 会自动解析。
  • 它的击球手使用 $.ajax 方法和 dataType: json
  • 我被旧版本的 jQuery 卡住了,所以它可能是库中的一个错误。但是我按照 Harsh Sanghani 的建议进行了尝试,但使用 $.ajax() 并没有遇到这个错误(?)。谢谢。

标签: jquery json


【解决方案1】:

目前它只是一个字符串,基本上,因为您需要对其进行解析以将其转换为 javascript 对象。

您可以在调试器中看到它的格式,因为我希望调试器也会为您解析它,因为显示长字符串会不太有用。

因此,您进行解析,以便您可以使用所需语言(在本例中为 javascript)中获得的结果。

【讨论】:

  • 但是,jQuery 应该使用正确的内容类型集自动执行此操作。
猜你喜欢
  • 1970-01-01
  • 2019-10-29
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多