2012-03-07 6 views
0

Depuis plusieurs jours, nous nous cognons la tête pour trouver la solution, mais nous ne sommes pas en mesure de comprendre pourquoi ce code ne fonctionne pas.Jquery Ajax ne fonctionne pas

var bing_url='http://api.search.live.net/json.aspx?JsonType=callback&JsonCallback=?&Appid=[OurApp Id]&query='+keyword+'&sources=web'; 

$.ajax({ 
    type: "GET", 
    url: bing_url, 
    dataType:"jsonp", 
    success: function(response) 
    { 
    $("#result").html(''); 
    if(response.SearchResponse.Web.Results.length) 
    { 
     $.each(response.SearchResponse.Web.Results, function(i,data) 
     { 
     var title=data.Title; 
     var dis=data.Description; 
     var url=data.Url; 

     var finall="<div class='webresult'><div class='title'><a href='"+url+"'>"+title+"</a></div><div class='desc'>"+dis+"</div><div class='url'>"+url+"</div></div>"; 
     $("#result").append(final); // Result 

     }); 

     parentwin.document.getElementsByTagName("body").item(0).innerHTML += final; 
    } 
    else 
    { 
     $("#result").html("<div id='no'>No Results</div>"); 
    } 
    }    //success 
}); 

Ce script sera appelé à partir de n'importe quelle autre page Web à partir de IE. Il va chercher les résultats de bing en utilisant bing api et ensuite les résultats seront ajoutés à la page d'origine.

Problème:

Ce script fonctionne quand nous l'ouvrir directement. Mais cela ne fonctionne pas quand il est appelé à partir d'une autre page.

+0

Y a-t-il seulement un problème dans IE? Si vous regardez dans votre console de développeur, voyez-vous des demandes? – Manatok

+0

Aussi, faites un peu de débogage. Si vous remplacez le rappel de succès par function() {alert (1)}, cela fonctionne-t-il? Découvrez le point exact auquel il échoue. – nicholaides

+0

@nicholaides succès callback ne montre pas d'alerte lorsque nous l'exécutons à partir d'une autre page Web, sinon il fonctionne et montre les résultats de l'API de recherche bing. – user1254630

Répondre

1

Vous avez probablement violé same origin policy. Vous pouvez accéder uniquement aux fichiers situés sur le même serveur que le script.

également de l'article wiki à propos XmlHttpRequest objet:

XMLHttpRequest est soumise à même politique d'origine du navigateur en ce que pour des raisons de sécurité, les demandes ne réussira que si elles sont faites sur le même serveur qui a servi l'original page Web. Il existe d'autres façons de contourner cette politique si nécessaire.

+0

@tresko merci pour la réponse.Mais ** quand nous exécutons directement le script, il fonctionne bien ** mais quand il est appelé à partir d'une autre page web, il ne fonctionne pas si sa violation de la même politique d'origine alors comment il fonctionne quand il est exécuté directement. – user1254630

+0

@ user1254630: * Ce script fonctionne lorsque nous l'ouvrons directement. Mais cela ne fonctionne pas quand il est appelé à partir d'une autre page. * .. c'est ce que vous avez écrit. –

+0

@tresko oui exactement – user1254630