2011-06-10 3 views
0

J'ai une méthode que j'accède à distance en utilisant <cfajaxproxy>. Cette méthode renvoie JSON avec quelques propriétés. Une des propriétés est une chaîne de HTML, et quand cette chaîne devient vraiment longue, Firefox jette une exception non interceptée. Cela fonctionne très bien dans IE9.Erreur Firefox analyse JSON avec grande chaîne

La taille exacte à laquelle l'erreur est levée est de 267 897 octets, comme indiqué dans Firebug pour l'ensemble du corps de la réponse. Si le corps de la réponse est de 267 896 octets, cela fonctionne correctement.

Voici l'erreur signalée par Firebug

uncaught exception: [Exception... "'SyntaxError: parseJSON' when calling method: [nsIDOMEventListener::handleEvent]" nsresult: "0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)" location: "JS frame :: chrome://firebug/content/spy.js :: callPageHandler :: line 744" data: no] 

http://shop.discountsurgical.com/CFIDE/scripts/ajax/package/cfajax.js Ligne 797

Ligne 797 à cfajax.js teste la réponse pour JSON valide

if(_492.test(json)){ 

avec _492 défini comme ce regex

var _492=/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/; 

Voici un exemple de la réponse (je l'ai haché la plupart d'entre dehors)

{"content":" 1 2 34 <div id=\"fixedRight\"> <div id=\"toolbox\">  <div class=\"text\">Tools<\/div> 
... 
<\/script> ","destinationDiv":"main"} 
+0

avez-vous envisagé d'utiliser 'cfdiv' pour charger la 'chaîne de html' comme contenu de corps à la place, comme une solution de contournement? – Henry

+0

Merci, Henry. Je vais devoir vérifier 'cfdiv'. Dans ce cas, il y a beaucoup plus de choses que de simplement peupler le contenu div, donc je ne suis pas sûr que ce soit approprié. – Yisroel

Répondre

0

L'erreur se produit avec Firebug éteint? Quelqu'un d'autre sur SO a eu une erreur étrange et il a été causé par Firebug.

+0

Oui. L'erreur est rencontrée par les utilisateurs réguliers qui n'ont pas installé Firebug. – Yisroel

1

J'ai eu la même erreur tout en faisant un ColdFusion.JSON.decode (JSONstring). Ma solution était d'utiliser une bibliothèque JS différente. MooTools a bien fonctionné pour moi. JSON.decode (JSONstring). Assurez-vous simplement de supprimer le préfixe JSON que coldfusion ajoute au début de la chaîne. (si cela s'applique à vous)

Vous pouvez également modifier cfajax.js pour supprimer le test. Après tout, vous devriez renvoyer un JSON valide pour que votre application fonctionne en premier lieu et si vous avez besoin de valider votre chaîne JSON, vous pouvez faire ce serveur ...

J'espère que cela vous aidera.