Получить объект json без JSON.parse? - PullRequest
1 голос
/ 27 сентября 2010

Я нашел это:

Используйте вывод Python:

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

и получите строку JSON с Jquery:

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

Это работает, кто может сказать, почемуэто?Благодаря ~

Ответы [ 3 ]

3 голосов
/ 27 сентября 2010

jQuery вызывает JSON.parse внутренне в современных браузерах, в которых он есть, если Content-Type - json

        return window.JSON && window.JSON.parse ?
            window.JSON.parse( data ) :
            (new Function("return " + data))();
1 голос
/ 27 сентября 2010

Если вы установите dataType на "json" или вы не установите его, а заголовок content-type содержит строку "json", он попытается проанализировать ее, васЗдесь можно увидеть логику работы :

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() здесь .

1 голос
/ 27 сентября 2010

Я считаю, что jQuery может определить тип ответа на основе отправляемого вами заголовка и автоматически оценить его как JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...