поиск bing api ajax не работает - PullRequest
1 голос
/ 30 мая 2010

Я хочу использовать поисковый API Bing с javascript. На самом деле я хочу, чтобы пользователь что-то написал и запросил Bing, чтобы получить только изображения.

Итак, я попробовал это с помощью ajax. Если я попробую URL http://api.search.live.net/xml.aspx?Appid=[YOURAPIKEY]&sources=image&query=home напрямую (с помощью браузера), я получу документ XML.

но если я использую XMLHttpRequest, он не работает.

<html>

<body>

<script>

var xhr = new XMLHttpRequest();
var url="http://api.search.live.net/xml.aspx?Appid=[YOURAPIKEY]&sources=image&query=home"
xhr.open("GET", url, true );
xhr.onreadystatechange=function(){
    /*if( xhr.readyState == 4 && xhr.status == 200) {
        document.write( xhr.responseText );
    }*/
    alert( "state: "+xhr.readyState +" status: "+xhr.status +" statusText: "+xhr.statusText +" respText: "+xhr.responseText);
};
xhr.send(null);



</script> 

</body>
</html>

Вопросы: 1) почему код сверху не работает? 2) любой другой способ сделать это без XMLHttpRequest?

спасибо.

Кстати. Мне просто интересно исправить это для Firefox и без внешних библиотек (jquery и т. Д.).

1 Ответ

1 голос
/ 30 мая 2010

Вы не можете сделать XHR междоменный. Вам нужен JSONP.

<script type="text/javascript">
function processBingImages(resp){
  ...
};
</script>
<script type="text/javascript" src="http://api.search.live.net/json.aspx?Appid=[YOURAPIKEY]&sources=image&query=home&JsonType=callback&JsonCallback=processBingImages"></script>

Вы можете сделать это динамическим (используя createElement("script") и т. Д.), Если это необходимо. См. этот ответ .

Используя JsonType=callback, мы указываем JSONP, а параметр JsonCallback указывает, что ответ должен вызвать processBingImages. Документация MSDN содержит подробности.

...