2010-11-30 4 views
1

Je passe certaines données en le convertissant en json & json sorties comme;Le format de données JSON a changé et la fonction de liste non ordonnée de la fonction a cessé de fonctionner?

[{"msg":"1: AVAILABLE: should be publicly available"},{"msg":"1: API USAGE: Uses api 
of twitter to develop messaging service \n PUBLICALLY AVAILABLE: Should be publically 
available"},{"msg":"1: EX_DES_EXP: Help novice users to exchange \n design experiences 
through specifications messages"}] 

J'utilise script suivant pour créer une liste non ordonnée en utilisant ces données JSON:

<script type="text/javascript" language="javascript"> 
jQuery(document).ready(function() { 
jQuery.getJSON("http://127.0.0.1/conn_msg2_qua.php", function (jsonData) { 
var markup; 
markup = []; 
jQuery.each(jsonData, function (i, j) { 
    markup.push("<li>"); 
    markup.push(j.msg); 
    markup.push("</li>"); 
}); 
jQuery('#msg_q').append(markup.join("")); 
});}); 
</script> 

    <script> 

Maintenant, je change la mise en œuvre des données qui a été converti en JSON comme bit & JSON apparaît comme

["1 AVAILABLE: should be publicly available","2 API USAGE: Uses api of twitter to 
develop messaging service \n PUBLICALLY AVAILABLE: Should be publically available","3 
EX_DES_EXP: Help novice users to exchange \n design experiences through 
specifications messages"] 

et ma fonction a cessé de l'imprimer en tant que liste non ordonnée. Quel est le problème provoque cela. Comment puis-je à nouveau le faire fonctionner.

Répondre

0

Comme il est juste un tableau de chaînes, il vous suffit de la j de votre boucle (la chaîne), et non la propriété .msg (qu'une chaîne n'a pas), comme ceci:

jQuery.each(jsonData, function (i, j) { 
    markup.push("<li>"); 
    markup.push(j); 
    markup.push("</li>"); 
}); 
+0

merci beaucoup – XCeptable

1

Remplacer:

markup.push(j.msg); 

avec:

markup.push(j); 

Mise à jour:

Je vous recommande également de changer la façon dont vous injectez texte dans votre code HTML. Au lieu de:

markup.push("<li>"); 
markup.push(j); 
markup.push("</li>"); 
[...] 
jQuery('#msg_q').append(markup.join("")); 

... utiliser quelque chose comme:

var li = $("<li></li>"); 
li.text(j); 
markup.push(li); 
[...] 
jQuery('#msg_q').append(markup);