JQuery JSONP вызов работает для других сайтов, но не мой - PullRequest
2 голосов
/ 18 июня 2011

Я работаю над небольшим букмарклетом, и, следовательно, обратные вызовы на мой сайт должны будут выполняться через JSONP, чтобы обойти ограничения между доменами. Ниже я включил несколько демонстраций, чтобы вы точно поняли, о чем я говорю.

У меня все отлично работает и работает с источником JSON, предоставленным на сайте Twitter (мой букмарклет не имеет ничего общего с Twitter, просто я могу заставить его работать, используя их данные JSON). Однако я не могу заставить его работать с JSON, исходящим с моего сервера.

Чтобы упростить задачу, я взял точный ответ, полученный от вызова JSON в Твиттере, и поместил его в файл JSON на своем собственном сервере. Даже при вызове точных данных JSON, когда JSON приходит с моего сервера, он не загружается.

Учитывая это, я, кажется, исключил: неправильный JSON и мой код JavaScript / jQuery (опять же, работает, когда он приходит откуда-то еще).

Это заставляет меня думать, что в том, как мой сервер возвращает файл JSON, есть что-то, что не нравится jQuery. Я проверил, и JSON, исходящий с моего сервера, настроен на соответствующий тип контента ("application / json").

Вот несколько примеров, чтобы вы могли видеть именно то, что я вижу. У кого-нибудь есть идеи?

Снова, чтобы подчеркнуть, что два примера ниже - это один и тот же код, просто вызов одного и того же результата JSON из разных мест. Здесь я бьюсь головой о стену.

Спасибо за любую помощь или совет.

Рабочая демоверсия:

http://www.hallsnet.com/temp/working.htm (см. /temp/working.js для источника JavaScript)

Демонстрация не работает:

http://www.hallsnet.com/temp/not-working.htm (см. /temp/not-working.js для источника JavaScript)

1 Ответ

1 голос
/ 18 июня 2011

Ваш файл json не вызывает никакой функции, в то время как jQuery ожидает, что ваш json будет динамически вызывать функцию в зависимости от того, какое имя jQuery назначает ему (как вы используете callback=? в URL).

Есливы смотрите на файл json в твиттере, он добавляет данные в имя функции на основе того, для чего задан параметр обратного вызова в URL-адресе, например, callback=asd будет вызывать данные в файле json с именем функции asd:

http://twitter.com/status/user_timeline/smith.json?count=10&callback=asd

asd([{"geo":null,"use... и т. Д. ...

В вашем файле JSON:

http://www.hallsnet.com/temp/not-working.json?callback=saddas32

выне оборачивать ваши данные внутри какого-либо обратного вызова функции (а jQuery создает их динамически, поскольку вы не указали статический для использования), поэтому файл json на самом деле не вызывает какую-либо функцию, и jQuery просто бесконечно ждет еесделай так.

...