2012-03-07 134 views
0

几天来,我们一直在寻找解决方案,但我们无法弄清楚为什么此代码无法正常工作。Jquery Ajax无法正常工作

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 
}); 

该脚本将从IE的任何其他网页中调用。它将使用bing api从bing中搜索结果,然后结果将被追加到原始页面。

问题:

此脚本工作时,我们直接打开它。但是从其他页面调用它时不起作用。

+0

在IE中只有一个问题吗?如果你看看你的开发者控制台,你是否看到任何要求? – Manatok 2012-03-07 12:42:27

+0

另外,做一些调试。如果用函数(){alert(1)}替换成功回调,它是否工作?找出失败的确切点。 – nicholaides 2012-03-08 05:51:12

+0

@nicholaides成功回调没有显示警报,当我们从其他网页运行它,否则它正在工作,并显示从搜索API的结果。 – user1254630 2012-03-08 08:59:00

回答

1

很有可能您违反了same origin policy。您只能访问与脚本位于同一服务器上的文件。

从wiki文章

兼谈XmlHttpRequest对象:

XMLHttpRequest是受制于浏览器的同源策略,出于安全原因,请求将它们只能到服务的原始同一服务器进行成功网页。如果需要,还有其他方法可以绕过这一政策。

+0

@tresko感谢您的回复。但是**当我们直接运行脚本时,它运行良好**但是当从另一个网页调用它时,如果它违反了相同的原始策略,那么它将无法正常工作,直接执行。 – user1254630 2012-03-08 08:15:00

+0

@ user1254630:*当我们直接打开它时,此脚本正在工作。但是当它从另一个页面被调用时它不起作用。* ..这是你写的。 – 2012-03-08 08:34:29

+0

@tresko是的 – user1254630 2012-03-08 08:46:27