Я пытаюсь реализовать простой запрос к 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.
На помощь! (и Спасибо!)
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 и создать функцию обратного вызова, чтобы разобрать результат и сделать то, что вам нужно на странице.
Браузер не позволит вам отправить XHR в другой домен, кроме того, на котором находится страница. Это сделано в целях безопасности.
Один из способов обойти это, что я видел, - установить прокси-сервер в домене, на котором размещена страница, который будет передавать запросы на фактический сервер api. См. http://ajaxpatterns.org/Cross-Domain_Proxy