Как сделать междоменный вызов ajax с помощью jQuery JSONP - PullRequest
1 голос
/ 02 декабря 2011

Что я должен изменить в приведенном ниже коде для загрузки междоменного XML-файла с помощью jsonp ..

$.ajax({
    type: "GET",
    url: "http://www.w3schools.com/xml/note.xml",
    dataType: "xml",
    success: function(xml) {
        alert('Hi');
    }
});

Надеюсь, что моя проблема решена.

Ответы [ 4 ]

3 голосов
/ 02 декабря 2011

Вы не можете загрузить XML с помощью jsonp, потому что данные должны быть записаны в json определенным образом.

Предположим, что ваши текущие данные примерно такие:

<address>
  <fullname>John Doe</fullname>
  <street>1st street</street>
  <number>345</number>
  <zip>12345</zip>
  <city>Nowhere</city>
</address>

ВыВам нужно будет отправить его в JSON, что-то вроде этого:

{
  fullname: "John Doe",
  street: "1st street",
  number: 345,
  zip: "12345",
  city: "Nowhere"
}

Более того, если вам нужно получить его через JSONP, вам нужно будет сделать еще одну модификацию.Допустим, вы отправляете ваш запрос следующим образом:

$.ajax({
  type: "GET",
  url: "http://www.w3schools.com/json/note.js",
  dataType: "jsonp",
  success: function(data) {
    alert('Hi');
  }
});

При вызове веб-службы jQuery добавит параметр с именем callback в URL запроса.

Скажем,сгенерированный URL: http://www.w3schools.com/json/note.js?callback=callback1234

Тогда ваш вывод json должен выглядеть следующим образом:

callback1234({
  fullname: "John Doe",
  street: "1st street",
  number: 345,
  zip: "12345",
  city: "Nowhere"
});
1 голос
/ 29 января 2013

Кросс-домен с использованием JSONP невозможен в некоторых сценариях. Ниже приведен URL-адрес для кросс-доменного AJAX-запроса с использованием Jquery напрямую или объекта XDomainRequest http://rajendrapathi.webs.com/apps/forums/show/14007722-jquery-and-javascript

1 голос
/ 02 декабря 2011

Насколько я знаю, вы не можете (напрямую) загружать данные XML с помощью JSONP.

Межсайтовый AJAX с JSONP полагается на обертывание необходимого объекта внутри вызова функции Javascript, который выполняется внутри динамически создаваемого<script>, и нет механизма для этого с XML.

Даже JSONP требует, чтобы удаленный сервер выполнял JSON-обертывание - сценарий CGI, выводящий данные JSON, не поддерживает JSONP автоматически из коробки.

Это явно будет невозможно, если ваши данные на самом деле представляют собой простые XML-файлы, размещенные на стандартном FTP-сервере.

0 голосов
/ 02 декабря 2011

Я думаю, dataType должен быть JSONP, если вы хотите получить JSONP.

http://api.jquery.com/jQuery.ajax/

...