在没有JSON.parse的情况下获取json对象?

时间:2010-09-27 02:03:31

标签: json jquery

我发现了这个:

使用Python输出:

print ‘Content-type: text/x-json\n\n’
print json.dumps([{'title':arr['title']}])

并使用Jquery获取json字符串:

$ajax(   
   success: function(msg){
      if(msg[0].title) alert(msg[0].title);
   }
)

它有效,谁能告诉我它为什么?感谢〜

3 个答案:

答案 0 :(得分:3)

如果Content-Type是json,jQuery在具有它的现代浏览器内部调用JSON.parse

        return window.JSON && window.JSON.parse ?
            window.JSON.parse( data ) :
            (new Function("return " + data))();

答案 1 :(得分:1)

我相信jQuery能够根据您发送的标头确定响应类型,并自动将其评估为JSON。

答案 2 :(得分:1)

如果您将dataType设置为"json"设置它,而content-type标头包含字符串"json",则试图解析它,you can see the logic at work here

if ( typeof data === "string" ) {
  // Get the JavaScript object, if JSON is used.
  if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
    data = jQuery.parseJSON( data );

  // If the type is "script", eval it in global context
  } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
    jQuery.globalEval( data );
  }
}

如果您感到好奇,jQuery.parseJSON()的来源为here