2010-05-30 5 views
1

Je veux utiliser l'API de recherche de Bing avec javascript. En fait, je veux que l'utilisateur écrive quelque chose et interroge Bing afin d'obtenir juste des images.recherche bing api ajax ne fonctionne pas

donc, je l'ai essayé en utilisant ajax. Si j'essaie l'url http://api.search.live.net/xml.aspx?Appid=[YOURAPIKEY]&sources=image&query=home directement (avec le navigateur) j'obtiens un document xml. Mais si j'utilise XMLHttpRequest, cela ne fonctionne pas si j'utilise 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> 

Questions: 1) pourquoi le Code de ci-dessus ne fonctionne pas? 2) tout autre moyen de le faire sans XMLHttpRequest?

merci.

btw. Je suis juste intéressé à résoudre ce problème pour Firefox et sans bibliothèques externes (jquery et ainsi de suite).

Répondre

1

Vous ne pouvez pas faire XHR interdomaine. Vous avez besoin de 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> 

Vous pouvez faire cette dynamique (en utilisant createElement("script"), etc.) en cas de besoin. Voir this answer.

En utilisant JsonType=callback, nous spécifions JSONP, et le paramètre JsonCallback spécifie que la réponse doit appeler processBingImages. Le MSDN documentation a des détails.

+0

Vous ne pouvez pas faire XHR interdomaine. Vous avez besoin de JSONP <--- je suppose, cela se fera avec Bing ou Google ou Yahoo apis, non? – jhon

+0

Oui, vous aurez le même problème avec n'importe quel XHR à un domaine différent. Je sais que Google a des services spécifiques pour vous permettre de réaliser ceci sans un XHR; Peut-être que Bing a quelque chose de similaire. – dmazzoni