Основные инструкции для междоменного домена JSONP - PullRequest
13 голосов
/ 28 марта 2011

Я везде искал здесь это. Мне нужно просто простое «как сделать» тянуть кросс-домен jsonp Я использую jQuery 1.5.1.

Я попробовал следующее в программе на другом сайте:

$.getJSON("http://www.mydomain.com/testjson.json?jsoncallback=?", function(data) {
    alert("I'm hitting this.");
}

Это вообще не работает.

Есть ли способ сделать простой междоменный вызов JSONP JQuery?

Спасибо

Ответы [ 2 ]

13 голосов
/ 29 марта 2011

JSONP требует сотрудничества сервера для успеха.Вы не можете извлекать случайные страницы, используя JSONP, и ожидать, что они будут успешными;сервер должен знать:

  1. Ему нужно сформулировать ответ JSONP, а не JSON-ответ.
  2. Ему нужно знать имя функции, чтобы обернуть ответ.

Если вы не уверены, почему сервер должен знать об этом или в чем различия между JSON и JSONP, вам следует ознакомиться с ними;или все это не будет иметь смысла.Для начала, посмотрите Может кто-нибудь объяснить, что такое JSONP, с точки зрения непрофессионала? и http://en.wikipedia.org/wiki/JSONP.

Понимая это немного больше, вы, вероятно, обнаружите, что сервер возвращает

{ "key": 1, "bar": "foo" }

(который является действительным JSON), а не:

someCallback({ "key": 1, "bar": "foo" })

, который является ответом JSONP.

1 голос
/ 12 июня 2014

Если вы попробуете эти http://terrasus.com/detail.jsp?articleID=396 шаг за шагом, все будет работать нормально. если вы создаете ответ jsonp, вы должны получить значение обратного вызова и динамически установить его в свой ответ. Эта статья имеет подробное объяснение

...