2010-09-27 7 views
1

Je trouve ceci:Obtenir un objet json sans JSON.parse?

Utilisez la sortie Python:

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

et obtenir chaîne JSON avec Jquery:

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

Il travaille, qui peut me dire pourquoi il est? Merci ~

Répondre

3

appelle jQuery JSON.parse en interne sur les navigateurs modernes qui ont si le type de contenu est JSON

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

merci pour votre réponse ~ medr – Zhaiduo

1

Je crois que jQuery est en mesure de déterminer le type de réponse en fonction de l'en-tête que vous envoyez et l'évaluer automatiquement en tant que JSON.

1

Si vous définissez le dataType-"json" ou vous ne pas placèrent et l'en-tête content-type contient la chaîne "json", il tente de l'analyser, 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); 
    } 
} 

Si vous êtes curieux, la source pour jQuery.parseJSON() est here.

+0

merci pour votre lien ~ pseudo – Zhaiduo