-1

以下のコードを使用して、javascriptのjsonURLから応答を取得しようとしました。

$(document).ready(function(){ 
    //attach a jQuery live event to the button
    $('#getdata-button').live('click', function(){
        alert("get data"); 
        $.getJSON('http://vamdemo2.e-isg.com/vamsyncservices/api/site/GetAllSites?username=Admin&password=password', function(data) {  
            alert(" data alert"+data); //uncomment this for debug
        });
    });
});

上記のURLから応答がありませんでした。URLをhttp://vamdemo2.e-isg.com/vamsyncservices/api/site/GetAllSites?username=Admin&password=passwordからhttps://www.googleapis.com/freebase/v1/text/en/に変更した場合bob_dylan、応答を取得しています。ブラウザで両方のURLを開くと、両方にデータがあります。しかし、javascriptを使用してURLから応答を取得しようとすると、1つのURLのみが応答を返しました。問題はどこだ??なぜ別のURLが応答しないのですか?

これに対する解決策を教えてください...よろしくお願いします...

4

1 に答える 1

1

あなたのコードをブラウザに入れましたが、両方の URL が機能していません。

googleapis.com URL の場合でも、コードを chrome にロードして F12 を押すと、次のエラーが発生します。

XMLHttpRequest cannot load https://www.googleapis.com/freebase/v1/text/en/bob_dylan. Origin null is not allowed by Access-Control-Allow-Origin.

これは、通常、JavaScript はドメイン 1 での実行とドメイン 2 からの URL の読み込みが許可されていないためです。これは、セキュリティ対策としての仕様です。

もしも

- 上記のクライアント コードを変更してもよろしいですか。

- vamdemo2.e-isg.com サーバーを作成して、「callback」クエリ文字列パラメータが追加されたときに応答を変更できます

それで

-これに対する解決策があります: JSONP

これを実装する方法の詳細については、こちらをご覧ください。

http://en.wikipedia.org/wiki/JSONP

于 2012-10-18T09:38:31.187 に答える