Запросите API Википедии с помощью Ajax (XMLHttpRequest)

Я пытаюсь реализовать простой запрос к 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 хорошо ответ, но содержание просто пусто.

Я подозреваю, что мог бы пропускать что-то на заголовке ПОЛУЧИТЬ запроса HTTP.

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

12
задан Josiah 18 September 2014 в 16:44
поделиться

2 ответа

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

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

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

17
ответ дан 2 December 2019 в 20:16
поделиться

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

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

-1
ответ дан 2 December 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: