API запроса Википедии с использованием AJAX (XMLHttpRequest) - PullRequest
12 голосов
/ 03 марта 2010

Я пытаюсь реализовать простой запрос к API Википедии, используя AJAX (XMLHttpRequest). Если я наберу URL-адрес в адресной строке Firefox, я получу аккуратный XML, без проблем. Тем не менее, вызывая точно такой же URL с:

// this is my XMLHttpRequest object
httpObjectMain.open("GET", "http://en.wikipedia.org/w/api.php?action=query&format=xml&prop=langlinks&lllimit=500&titles=kaas", true);
httpObjectMain.send(null);

возвращает пустой ответ. Согласно FireBug, я получаю ответ 200 OK, но содержимое просто пустое.

Я подозреваю, что в заголовке GET http-запроса что-то отсутствует.

Помощь! (и спасибо!)

Ответы [ 2 ]

17 голосов
/ 04 марта 2010

API Википедии поддерживает JSONP . Строка запроса станет примерно такой:

http://en.wikipedia.org/w/api.php?action=query&format=json&callback=test&prop=langlinks&lllimit=500&titles=kaas

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

0 голосов
/ 03 марта 2010

Браузер не позволит вам отправить XHR в другой домен, кроме того, на котором находится страница. Это в целях безопасности.

Один из способов обойти это, как я видел, - настроить прокси в домене, на котором размещена страница, который будет передавать запросы на настоящий сервер API. Смотри http://ajaxpatterns.org/Cross-Domain_Proxy

...