Pourquoi est-ce invalid JSON?

Je vais donc envoyer des données à partir d'un serveur de revenir à une page. Il ressemble JSON valide pour moi, et pourtant, c'est d'être pris/géré par le gestionnaire d'erreur dans mon jQuery.ajax() de l'appel.

C'est le message d'erreur affiché:

Error: Invalid JSON: ({"id":"#settingsResult","payload":"<form id=\"pwd_change_frm\" action=\"post\">\n    <div>\n        <div>\n            <div><\/div>\n            <div><label for=\"changepwd_password\">New Password<\/label><\/div>\n            <div><input type=\"password\" name=\"changepwd[password]\" title=\"Enter new password\" style=\"width:258px;\" id=\"changepwd_password\" \/><\/div>\n        <\/div>\n        <div class=\"spacer\">&nbsp;<\/div>\n        <div>\n            <div><\/div>\n            <div><label for=\"changepwd_password_confirm\">Confirm New Password<\/label><\/div>\n            <div><input type=\"password\" name=\"changepwd[password_confirm]\" title=\"Retype new password)\" style=\"width:258px;\" id=\"changepwd_password_confirm\" \/><\/div>\n        <\/div>\n        <div class=\"spacer\"><\/div>\n        <div><img id=\"pwd_chg_btn\" class=\"submit_btn\" src=\"\/images\/button_submit.gif\" alt=\"Button_submit\" \/><\/div>\n    <\/div>\n    <input type=\"hidden\" name=\"changepwd[_csrf_token]\" value=\"1b7f3529797245c0fc43c3ddf5ade30d\" id=\"changepwd__csrf_token\" \/><\/form>\n<div class=\"spacer\"><\/div>"})

En aparté, FF Firebug analyse correctement les données renvoyées et affiche ot correctement - c'est pourquoi je ne comprends pas pourquoi jQuery ne semble pas possible de le gérer.

voici le morceau de code qui fait l'appel:

jQuery.ajax({
  type: 'POST',
  url: '/some_url?id='+this.id,
  timeout: 2000,
  success: function(result){ jQuery(result.id).html(result.payload); },
  error: function (xhr, ajaxOptions, thrownError){ alert('Error: '+ thrownError); }
});
  • jsonlint.com valide le JSON (j'ai collé sans les parenthèses)
  • à l'aide de jq 1.5 1.5.1 ? 1.5 eu quelques bugs peut-être cela est-il? Ils ont fait une révision majeure de l'ajax module, donc je ne serais pas suriprised. Json validateur dit json est ok à ce haussement d'épaules.
  • Vous devez avoir résolu depuis que vous avez accepté la réponse, mais à l'aide de jQuery $.parseJSON() il a échoué pour moi, même sans le (). J'ai été en mesure de l'obtenir pour analyser si j'ai enlevé tous les /n, et remplacé tous les \" avec \'.