Ce morceau de JSON valide (il a été généré en utilisant le json_encode de php):jQuery.parseJSON est-il en mesure de traiter tous les json valides?
{"html":"form is NOT valid<form id=\"articleform\" enctype=\"application\/x-www-form-urlencoded\" method=\"post\" action=\"\"><dl class=\"zend_form\">\n<dt id=\"title-label\"> <\/dt>\n<dd id=\"title-element\">\n<input type=\"text\" name=\"title\" id=\"title\" value=\"Artikel K\"><\/dd>\n<dt id=\"articleFormSubmitted-label\"> <\/dt>\n<dd id=\"articleFormSubmitted-element\">\n<input type=\"hidden\" name=\"articleFormSubmitted\" value=\"1\" id=\"articleFormSubmitted\"><\/dd>\n<dt id=\"submit-label\"> <\/dt><dd id=\"submit-element\">\n<input type=\"submit\" name=\"submit\" id=\"submit\" value=\"Bewaar artikel\" onclick=\"this.value='Bezig...';\"><\/dd><\/dl><\/form><script type=\"text\/javascript\">\n\t $(\"#articleform\").submit(function(){\n $.post(\"\/admin\/ajax\/contenttree\/node\/9\/ajaxtarget\/ajaxContainer\", $(\"#articleform\").serialize(), function(html){$(\"#ajaxContainer\").html(html);});\n\t\t return false;\n\t });\n\n <\/script>","newNodeName":""}
est de donner
jQuery.parseJSON(data)
et moi un moment difficile.
Avec ce morceau de code:
alert('start');
alert(data);
jQuery.parseJSON(data);
alert('stop');
Je reçois un début de message et les données (jsonstring ci-dessus) est affiché. Le message "stop" n'apparaît jamais.
Quand j'utilise cette JSON:
{"html":"test","newNodeName":""}
L'arrêt de message apparaît finalement.
$.ajax({
url: "/admin/ajax/contenttree/node/" + (node.id).replace("node_", ""),
success: function(data){
//this message appears
alert("succes");
//this gives undefined
alert(data.html);
var result = $.parseJSON(data);
//this message never appears
alert("after parse");
$("#ajaxContainer").html(result.html);
}
});
J'ai vérifié que mon premier gros morceau de json est valide. Pourquoi n'est-il pas traité par jQuery.parseJSON
Y a-t-il des caractères spéciaux qui ne vont pas bien avec json?
Comment ce json descend-il chez le client? –
Via $ .ajax. La réponse ajax elle-même est le résultat d'un php-array qui est traité par php_encode. – murze
Ne tirez pas sur moi, nous cherchons des erreurs, non? Il y a un point-virgule manquant après 'jQuery.parseJSON (data)' dans ce qui précède. Peu importe si elle est suivie d'une nouvelle ligne (comme c'est le cas dans votre texte cité) à cause de l'insertion de points-virgules et donc très probablement pas le problème, mais si (par exemple) le code que vous exécutez est minifié/compressé/emballé, ce serait un problème. Donc, juste mentionner. –