У меня нет проблем с созданием запросов jsonp, однако я не уверен в настройке веб-службы для доставки ответов в jsonp.Тестирование статического ответа jsonp
Во-первых, нужно ли настраивать сервер определенным образом, чтобы разрешать запросы jsonp, или должна ли страница правильно иметь отформатированный ответ правильно?
В ходе тестирования у меня есть следующий JSONP ответ от geonames.org (я поместил его пустую страницу на сервере/1 домен с чем-то еще):
<?php echo $_GET['callback'];?>({"postalcodes":[{"adminName2":"Westchester","adminCode2":"119","postalcode":"10504","adminCode1":"NY","countryCode":"US","lng":-73.700942,"placeName":"Armonk","lat":41.136002,"adminName1":"New York"}]});
На сервере/домен 2 I» м делает следующий запрос:
$.ajax({
// works when I make the call to geonames.org instead of domain1
//url: 'http://www.geonames.org/postalCodeLookupJSON?postalcode=10504&country=US&callback=?',,
url: 'http://www.domain1.com/test/jsonp.php?callback=?',
success: function(data) {
$('#test').html(data);
},
});
вызов работает, когда я разместить файлы на том же сервере (либо домен 1 или 2) и превратить его в запрос регулярной JSon. Что я делаю не так?
Просто уточнить: Мой вопрос относится к странице ПОЛУЧЕНИЕ запроса. Я знаю, что запрос работает, когда я делаю это на geonames.org, flickr и т. Д. Apis. Тем не менее, я пытаюсь настроить страницу для отправки ответа. В моем примере у меня просто пустая страница с жестко закодированным jsonp. Я не уверен, что мне нужно иметь некоторые другие заголовки на странице или что-то включено на моем сервере.
является вызывающим и существует сервер в том же домене ??? – kobe 2010-12-07 04:36:10
@gov, нет, они этого не делают. В моем примере используются три разных сервера (и домены). Домен 1 запрашивает данные из geonames.org. Принимая ответ от geonames.org и помещая его на пустую страницу в домене 2, и выполнение того же запроса из домена 1 в домен 2 не работает. То же самое для того, чтобы обратить вспять его и сделать запрос от домена 2 до домена 1. – Choy 2010-12-07 04:46:22
Пришлось добавить заголовок управления доступом, чтобы заставить его работать: header ('Access-Control-Allow-Origin: *'); (в PHP) – Choy 2010-12-07 16:14:10