网站首页 > 网页设计教程 > WEB标准化 > ajaxSubmit插件jQuery1.4.2版JSON问题

ajaxSubmit插件jQuery1.4.2版JSON问题

  • 作者:互联网
  • 时间:2010-09-09 10:42:32

jQuery Form 插件基于jQuery v1.4.2版返回JSON数据时一直报错;修改以下内容可恢复;

原后台输出数据格式如:{sitename:'开发者网络',siteurl:'ww***AA.net',level:10} 需改为 {"sitename":"开发者网络","siteurl":"ww***AA.net","level":10}

也就是在名称需以双引号包括;因为 jQuery 1.4.2版在 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, "")) ) {

   // Try to use the native JSON parser first
   return wi***w.JSON && wi***w.JSON.parse ?
    wi***w.JSON.parse( data ) :
    (new Function("return " + data))();

  } else {
   jQ***y.error( "Invalid JSON: " + data );
  }

jQuery Form 插件需要修改的地方

if (scr || s.***tarea) {
     // see if user embedded response in textarea
     var ta = do***etElementsByTagName('textarea')[0];
     if (ta) {
      xh***esponseText = ta.value;
     }
     else if (scr) {
      // account for browsers injecting pre around json response
      var pre = do***etElementsByTagName('pre')[0];
      if (pre) {
       xh***esponseText = pr***nnerHTML;
      }
     }    
    }
    else if (s.***aType == 'xml' && !xh***esponseXML && xh***esponseText != null) {
     xh***esponseXML = toXml(xh***esponseText);
    }

修改为:

if (scr || s.***tarea) {
     // see if user embedded response in textarea
     var ta = do***etElementsByTagName('textarea')[0];
     if (ta) {
      xh***esponseText = ta.value;
     }
     else if (scr) {
      // account for browsers injecting pre around json response
      var pre = do***etElementsByTagName('pre')[0];
      if (pre) {
       xh***esponseText = pr***nnerHTML;
      }else xh***esponseText=doc.body.innerHTML;
     }    
    }
    else if (s.***aType == 'xml' && !xh***esponseXML && xh***esponseText != null) {
     xh***esponseXML = toXml(xh***esponseText);
    }

原文地址:http://ww***fo.net/Program/JavaScript/10090191.shtml