bing搜索api ajax不起作用

时间:2010-05-30 05:45:09

标签: javascript ajax bing xmlhttprequest

我想用javascript使用Bing的搜索API。 实际上,我希望用户写一些东西并查询Bing以获得图像。

所以,我尝试使用ajax。 如果我直接尝试使用网址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 个答案:

答案 0 :(得分: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")等)。请参阅this answer

使用JsonType=callback我们指定JSONP,JsonCallback参数指定响应应该调用processBingImagesMSDN documentation有详细信息。