Обновление до jquery 1.5 приводит к проблемам с .getJSON - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть часть моего настоящего кода следующим образом:

$. GetJSON ( "http://cross.subdomain.url.com", функция (данные) { оповещения (data.someobj); // использовать данные, чтобы сделать некоторую работу. } );

URL http://cross.subdomain.url.com, возвращает JSON.

Это работало прекрасно, когда в jquery 1.4.4.

После обновления до jquery 1.5 это перестало работать.

Я пробовал следующие варианты:

  1. Изменение dataType на json.
  2. Добавление "обратного вызова?" на запрос.

Может кто-нибудь пролить свет на поведение jjery ajax ??

Спасибо

Ответы [ 4 ]

1 голос
/ 16 февраля 2011

Это была ошибка, и она исправлена ​​в 1.5.1.См. Тикет http://bugs.jquery.com/ticket/8125,. Вы можете найти последнюю версию jQuery с последними исправлениями на http://code.jquery.com/jquery-git.js

1 голос
/ 16 февраля 2011

Вам необходимо предоставить данные в виде JSONP.

Это JSON, заключенный в функцию, вместо того, чтобы возвращать {"happy":"yes"} на стороне сервера, в ответ на запрос URL-адреса, содержащего запросстроковый параметр callback=myfunction, вы генерируете myfunction({"happy":"yes"}) в качестве ответа.

Возможно, это маскировалось в предыдущей версии Jquery, и ваше приложение могло не работать в некоторых браузерах (например, Chrome).

0 голосов
/ 20 февраля 2011

Эта проблема также возникает, когда на стороне сервера тип контента не установлен на json.Выполнение следующих действий на стороне сервера решает проблему:

  1. response.setContenyType ("text / json");
  2. response.setHeader ("Access-Control-Allow-Origin", "*");
0 голосов
/ 16 февраля 2011

Страница документации jQuery для getJSON показывает следующее (в разделе Дополнительные примечания ):

из-за браузераограничения безопасности, большинство запросов «Ajax» подчиняются той же политике происхождения;запрос не может успешно получить данные из другого домена, субдомена или протокола.

Похоже, что вы нарушаете эту политику.

...