O plug-in jQuery Form continua relatando um erro ao retornar dados JSON baseados em jQuery v1.4.2, que podem ser restaurados modificando o seguinte conteúdo;
O formato original dos dados de saída em segundo plano é como: {sitename:'Developer Network',siteurl:'www.AAA.net',level:10} precisa ser alterado para {"sitename":"Developer Network","siteurl" :"www.AAA.net","nível":10}
Ou seja, o nome precisa ser colocado entre aspas duplas porque o jQuery versão 1.4.2 adicionou julgamento regular no 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, "")) ) { // Tente usar o analisador JSON nativo primeiro } outro { |
O que precisa ser modificado no plug-in jQuery Form
if (scr || s.textarea) { // vê se o usuário incorporou a resposta na textarea var ta = doc.getElementsByTagName('textarea')[0]; se (ta) { xhr.responseText = ta.valor; } senão se (scr) { // conta para navegadores que injetam pré em torno da resposta json var pre = doc.getElementsByTagName('pre')[0]; if (pré) { xhr.responseText = pre.innerHTML; } } } senão if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) { xhr.responseXML = toXml(xhr.responseText); } |
Modifique para:
if (scr || s.textarea) { // vê se o usuário incorporou a resposta na textarea var ta = doc.getElementsByTagName('textarea')[0]; se (ta) { xhr.responseText = ta.valor; } senão se (scr) { // conta para navegadores que injetam pré em torno da resposta json var pre = doc.getElementsByTagName('pre')[0]; if (pré) { xhr.responseText = pre.innerHTML; } senão xhr.responseText=doc.body.innerHTML; } } senão if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) { xhr.responseXML = toXml(xhr.responseText); } |
Endereço original: http://www.vifo.net/Program/JavaScript/10090191.shtml