Решение проблемы parseerror в jQuery ajax

10.03.2011 23:04 от DyaGa

Столкнулся с проблемой, когда после обновления jQuery с версии 1.4.4. до версии 1.5.1 ajax запрос стал возвращать статус parseerror с ошибкой jQuery[...] was not called.

Как оказалось, источником проблемы является плагин jQuery.validation, который переопределяет любые заданые $.ajax настройки к настройкам по умолчанию (jsonp: "callback", jsonpCallback: function() {...}):

// create settings for compatibility with ajaxSetup 
settings = $.extend(settings, $.extend({}, $.ajaxSettings, settings));

т.е. даже если в настройках запроса $.ajax установить dataType: 'json', тип данных будут интерпертироваться как jsonp данные, отсюда и ошибка parseerror.

Пока что временным решением является следующий код:

$(function () {
$.ajaxSettings.cache = false;
$.ajaxSettings.jsonp = undefined;
$.ajaxSettings.jsonpCallback = undefined;
})

Но, лучше, загрузить с ГитХаба последнюю разрабатываемую версию плагина jQuery.validation: https://github.com/jzaefferer/jquery-validation, т.к. официально пока доступна версия 1.7 плагина jQuery.validation, которая не совместима с версией jQuery 1.5.x.



Вернуться

Добавить комментарий

Комментарий Роман | 04.07.2011

Спасибо, заработало! я уже все мозги разбил на части, все извилины заплёл, все дырки облизал...

Комментарий zatvorius | 08.09.2011

А мне почему то не помогло(( возможно есть еще варианты куда копать?

Комментарий DyaGa | 08.09.2011

zatvorius

Странно, по идее, в последней версии 1.8.1 такой ошибки не должно быть