2012-03-07 176 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