jQuery v1.4.2를 기반으로 JSON 데이터를 반환할 때 jQuery Form 플러그인에서 계속 오류를 보고합니다. 다음 내용을 수정하여 복원할 수 있습니다.
원래 백그라운드 출력 데이터 형식은 다음과 같습니다. {sitename:'Developer Network',siteurl:'www.AAA.net',level:10}을(를) {"sitename":"Developer Network","siteurl"로 변경해야 합니다. :"www .AAA.net","레벨":10}
즉, jQuery 버전 1.4.2에서는 parJSON 메서드에 일반 판단이 추가되었기 때문에 이름을 큰따옴표로 묶어야 합니다.
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, "")) ) { // 먼저 기본 JSON 파서를 사용해 보세요. } 또 다른 { |
jQuery Form 플러그인에서 수정해야 할 사항
if (scr || s.textarea) { // 사용자가 텍스트 영역에 응답을 삽입했는지 확인합니다. var ta = doc.getElementsByTagName('textarea')[0]; 만약 (타) { xhr.responseText = ta.value; } 그렇지 않으면 (scr) { // json 응답 주위에 사전 주입을 하는 브라우저를 고려합니다. var pre = doc.getElementsByTagName('pre')[0]; 만약 (사전) { xhr.responseText = pre.innerHTML; } } } else if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) { xhr.responseXML = toXml(xhr.responseText); } |
다음으로 수정:
if (scr || s.textarea) { // 사용자가 텍스트 영역에 응답을 삽입했는지 확인합니다. var ta = doc.getElementsByTagName('textarea')[0]; 만약 (타) { xhr.responseText = ta.value; } 그렇지 않으면 (scr) { // json 응답 주위에 사전 주입을 하는 브라우저를 고려합니다. var pre = doc.getElementsByTagName('pre')[0]; if (사전) { 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); } |
원래 주소: http://www.vifo.net/Program/JavaScript/10090191.shtml