Плагин jQuery Form продолжает сообщать об ошибке при возврате данных JSON на основе jQuery v1.4.2. Его можно восстановить, изменив следующее содержимое;
Исходный формат фоновых выходных данных следующий: {sitename:'Developer Network',siteurl:'www.AAA.net',level:10} необходимо изменить на {"sitename":"Developer Network","siteurl" :"www .AAA.net","level":10}
То есть имя необходимо заключить в двойные кавычки, поскольку в jQuery версии 1.4.2 добавлена регулярная оценка в методе parseJSON;
if ( /^[ ],:{}s]*$/.test(data.replace(/\(?:[" \/bfnrt]|u[0-9a-fA-F]{ 4})/г , "@") .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; } иначе, если (скр) { // учитываем, что браузеры внедряют pre вокруг ответа 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; } иначе, если (скр) { // учитываем, что браузеры внедряют pre вокруг ответа json var pre = doc.getElementsByTagName('pre')[0]; если (предварительно) { xhr.responseText = pre.innerHTML; } Еще 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.