1

javascriptでBingの検索APIを使いたいです。実際には、画像だけを取得するために、ユーザーに何かを書いて 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 など) なしで修正することに興味があります。

4

1 に答える 1

1

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パラメーターは応答が を呼び出す必要があることを指定しますprocessBingImagesMSDNのドキュメントに詳細があります。

于 2010-05-30T06:01:29.010 に答える