2010-05-30 7 views
1

Bing의 검색 API를 javascript와 함께 사용하고 싶습니다. 사실, 나는 단지 이미지를 얻기 위해 사용자가 뭔가를 쓰고 Bing을 쿼리하기를 원합니다.bing search api ajax가 작동하지 않습니다.

그래서 저는 아약스를 사용해 보았습니다. http://api.search.live.net/xml.aspx?Appid=[YOURAPIKEY]&sources=image&query=home (브라우저로) URL을 직접 입력하면 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없이이 작업을 수행 할 수있는 다른 방법은 무엇입니까?

감사합니다.

btw. 난 그냥 파이어 폭스에 대한 외부 라이브러리 (jquery 등등)없이 해결에 관심이 있어요.

답변

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을 사용하여 JsonCallback 매개 변수는 processBingImages을 호출하도록 지정합니다. MSDN documentation에는 세부 정보가 있습니다.

+0

XHR 교차 도메인을 수행 할 수 없습니다. JSONP가 필요합니다. <--- Bing이나 Google 또는 Yahoo apis에서 발생합니다. 맞습니까? – jhon

+0

예, 다른 도메인의 모든 XHR에서 동일한 문제가 발생합니다. Google에 XHR없이이를 가능하게하는 특정 서비스가 있다는 것을 알고 있습니다. Bing은 비슷한 것을 가지고 있습니다. – dmazzoni

관련 문제