JQuery 1.5 и новый тип данных "Text JSON"
Я только что обновился до JQuery 1.5, и все мои ajax-вызовы, которые возвращают JSON и несколько плагинов, мгновенно прервались.
В моем коде до 1.5 я указал dataType как:
dataType: "json"
Изменение dataType на:
dataType: "text json"
Исправляет проблему, но я не хочу менять плагины вручную, так как это повлияет на обновления.
Есть ли способ справиться с этим лучше с меньшими помехами?
4 ответа
Эта проблема вызвана плагином проверки jQuery и тем, как он расширяет объект ajaxSettings для собственного использования (изменяет вызовы json на вызовы jsonp). Надеемся, что скоро будет официальное обновление плагина для валидации, но в то же время здесь есть патч, который решает проблему:
https://github.com/bigfix/jquery-validation/commit/9aa53f9241224ba349f9fe1b2c801be0f431b63b
Редактировать:
Подключаемый модуль для проверки jQuery, совместимый с jQuery 1.5.1, доступен на git hub: https://github.com/jzaefferer/jquery-validation
Редактирование # 2: выпущен плагин валидации jQuery 1.8, совместимый с jQuery 1.5.1 (и более ранними версиями):
Читайте об этом: http://bassistance.de/2011/03/25/release-validation-plugin-1-8/
Загрузите его: http://bassistance.de/jquery-plugins/jquery-plugin-validation/
Я столкнулся с этой ошибкой JQuery, которая устраняет проблему http://bugs.jquery.com/ticket/8084.
Добавление следующего кода после объявления скрипта JQuery устраняет проблему:
$.ajaxSetup ({jsonp: null, jsonpCallback: null});
Непроверенный код, добавьте его после включения jQuery и до запуска собственного кода.
jQuery.ajaxSetup({
converters: {
"json": jQuery.parseJSON,
"* json": jQuery.parseJSON
}
});
См. Ответ на parsererror после запроса jQuery.ajax с типом контента jsonp
В частности, использовать
$.getJSON(url,
function(data){
yourFunction(data);
return false;
});