34 votes

La réponse jQuery JSON déclenche toujours une erreur ParseError

Je suis en train d'exécuter certaines opérations de base avec jQuery et JSON. Actuellement, avoir de la difficulté avec jQuery acceptant réponse JSON à partir de mon jouer au cadre d'application. Ci-dessous est une version simplifiée du code qui produit toujours l'erreur.

$.ajax({
    type: 'POST',
    url: "@{FrontEnd.isUsernameAvailable()}",
    data: "name=thisnameisavailable",
    cache: false,
    success: function(data) {
        console.log("Success... ");
    },
    error: function(jqXHR, textStatus, errorThrown) {
        console.log("Error... " + textStatus + "        " + errorThrown);
    },
    dataType: 'json'
});

L'erreur de rappel est toujours déclenché. Il affiche

Erreur... parsererror jQuery15001997238997904205_1298484897373 n'a pas été appelé

Inspecter le retour JSON via Firebug affiche pas les erreurs et les différents JSON lint également valider. Changer de type de données "texte" fait le succès sera appelé. Mais je suis en train d'utiliser le isUsernameAvailable appel dans le cadre de jQuery validation plugin j'ai donc besoin d'un retour JSON valide.

34voto

ggutenberg Points 2282

Je suis peut-être un malentendu, mais ne pourrait-on pas définir l' dataType de text et JSON.parse() les données renvoyées?

success: function(data) {
    data = JSON.parse(data);
    // process data
},

Edité pour ajouter généralement convenu que la solution (déjà un commentaire uniquement):

J'ai juste pris un coup d'oeil à api.jquery.com/jQuery.ajax et il ressemble avec jQuery 1.5 vous pouvez faire une conversion de type de toutes sortes. "multiples, séparées par un espace de valeurs: Comme de jQuery 1.5, jQuery peut convertir un type de données à partir de ce qu'il a reçu dans le header Content-Type à ce que vous avez besoin. Par exemple, si vous souhaitez une réponse de texte pour être traitée comme XML, l'utilisation de texte "xml" pour le type de données." Peut-être que vous pouvez essayer de texte "json".

12voto

Johnny Oshika Points 15580

J'ai eu la même erreur dès que j'ai mis à niveau vers jQuery 1.5. Il s'avère que mon problème est dû au fait que j'utilise également le plugin de validation jquery, qui n'est pas compatible avec jQuery 1.5. Si je supprime le plugin de validation jquery, $ .ajax () avec dataType json fonctionne très bien.

Plus d'informations sur l'incompatibilité du plugin de validation jquery ici: http://bugs.jquery.com/ticket/8118

3voto

Robert Points 21

J'ai également obtenu "l'analyseur syntaxique jQueryNNNN_NNN n'a pas été appelé" (en utilisant jsonp et jQuery 1.7.2) La raison en était qu'une des valeurs de la structure json renvoyée contenait des sauts de ligne. J'espère que cela aide quelqu'un.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X