El complemento jQuery Form sigue informando un error al devolver datos JSON basados en jQuery v1.4.2; se puede restaurar modificando el siguiente contenido;
El formato original de los datos de salida en segundo plano es el siguiente: {nombre del sitio: 'Red de desarrolladores', URL del sitio: 'www.AAA.net', nivel: 10} debe cambiarse a {"nombre del sitio": "Red de desarrolladores", "siteurl" :"www .AAA.net","nivel":10}
Es decir, el nombre debe estar entre comillas dobles porque la versión 1.4.2 de jQuery agregó juicio regular en el método 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, "")) ) { // Intenta utilizar primero el analizador JSON nativo } demás { |
Qué debe modificarse en el complemento jQuery Form
si (scr || s.textarea) { // ver si la respuesta del usuario está incrustada en el área de texto var ta = doc.getElementsByTagName('textarea')[0]; si (ta) { xhr.responseText = ta.valor; } si no (scr) { // cuenta para los navegadores que inyectan pre alrededor de la respuesta json var pre = doc.getElementsByTagName('pre')[0]; si (pre) { xhr.responseText = pre.innerHTML; } } } else if (s.dataType == 'xml' &&!xhr.responseXML && xhr.responseText!= null) { xhr.responseXML = toXml(xhr.responseText); } |
Modificar a:
si (scr || s.textarea) { // ver si la respuesta del usuario está incrustada en el área de texto var ta = doc.getElementsByTagName('textarea')[0]; si (ta) { xhr.responseText = ta.valor; } si no (scr) { // cuenta para los navegadores que inyectan pre alrededor de la respuesta json var pre = doc.getElementsByTagName('pre')[0]; si (pre) { xhr.responseText = pre.innerHTML; } else xhr.responseText=doc.body.innerHTML; } } else if (s.dataType == 'xml' &&!xhr.responseXML && xhr.responseText!= null) { xhr.responseXML = toXml(xhr.responseText); } |
Dirección original: http://www.vifo.net/Program/JavaScript/10090191.shtml