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;
});
Другие вопросы по тегам