2012-03-07 29 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の他のWebページから呼び出されます。 bing apiを使用してbingの結果を検索し、結果が元のページに追加されます。

問題:私たちはそれを直接開くと

このスクリプトが動作しています。しかし、別のページから呼び出されたときには機能しません。

+0

IEには問題がありますか?デベロッパーコンソールを見ると、外出中のリクエストはありますか? – Manatok

+0

また、いくつかのデバッグを行います。成功したコールバックをfunction(){alert(1)}に置き換えると、それは機能しますか?それが失敗する正確な点を見つけます。 – nicholaides

+0

@nicholaides成功コールバックは、他のWebページから実行したときに警告を表示していません。それ以外の場合は、動作しており、bing search apiの結果を表示しています。 – user1254630

答えて

1

おそらくsame origin policyに違反している可能性があります。スクリプトと同じサーバー上にあるファイルにのみアクセスできます。

はまた、wikiの記事からおよそXmlHttpRequest対象:彼らはオリジナルを務めた同じサーバに行われた場合

のXMLHttpRequestが、その中にブラウザの同一生成元ポリシーの対象となるには、セキュリティ上の理由から、要求にのみ成功しますウェブページ。必要に応じてこのポリシーを迂回する別の方法があります。

+0

@treskoのレスポンスありがとうございます。**私たちは直接スクリプトを実行しているときにはうまく動作します**しかし、別のWebページから呼び出されたときには、同じオリジンポリシーに違反していれば動作しています直接実行されます。 – user1254630

+0

@ user1254630:*このスクリプトは、直接開いたときに動作します。しかし、それは別のページから呼び出されたときには機能しません。* ..これはあなたが書いたものです。 –

+0

@treskoはい正確 – user1254630

関連する問題