Le plug-in jQuery Form continue de signaler une erreur lors du renvoi de données JSON basées sur jQuery v1.4.2. Il peut être restauré en modifiant le contenu suivant :
Le format d'origine des données de sortie en arrière-plan est le suivant : {sitename:'Developer Network',siteurl:'www.AAA.net',level:10} doit être remplacé par {"sitename":"Developer Network","siteurl" :"www .AAA.net","niveau":10}
Autrement dit, le nom doit être placé entre guillemets doubles ; car la version 1.4.2 de jQuery a ajouté un jugement régulier dans la méthode parseJSON.
if ( /^[ ],:{}s]*$/.test(data.replace(/\(?:[" \/bfnrt]|u[0-9a-fA-F]{ 4})/g , "@") .replace(/"[^" \nr]*"|true|false|null|-?d+(?:.d*)?(?:[eE][+-]? d+)?/g , "]") .replace(/(?:^|:|,)(?:s*[)+/g, "")) ) { // Essayez d'abord d'utiliser l'analyseur JSON natif } autre { |
Ce qui doit être modifié dans le plug-in jQuery Form
if (scr || s.textarea) { // voir si l'utilisateur a intégré la réponse dans la zone de texte var ta = doc.getElementsByTagName('textarea')[0]; si (ta) { xhr.responseText = ta.value; } sinon si (scr) { // compte pour les navigateurs injectant une réponse pré-autour de json var pre = doc.getElementsByTagName('pre')[0]; si (pré) { xhr.responseText = pre.innerHTML; } } } sinon if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) { xhr.responseXML = toXml(xhr.responseText); } |
Modifier pour :
if (scr || s.textarea) { // voir si l'utilisateur a intégré la réponse dans la zone de texte var ta = doc.getElementsByTagName('textarea')[0]; si (ta) { xhr.responseText = ta.value; } sinon si (scr) { // compte pour les navigateurs injectant une réponse pré-autour de json var pre = doc.getElementsByTagName('pre')[0]; si (pré) { xhr.responseText = pre.innerHTML; } else xhr.responseText=doc.body.innerHTML; } } sinon if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) { xhr.responseXML = toXml(xhr.responseText); } |
Adresse originale : http://www.vifo.net/Program/JavaScript/10090191.shtml