1

.getJSON を使用してサーバーから JSON ファイルを取得し、そこからデータを取得し (URL はデータの一部です)、解析された URL から情報を取得する必要がある別の関数を呼び出す関数があります (プレーンなジェーンHTML ページ)。

var jsonurl = "http://server.company.com/file.json"    
$.getJSON(jsonurl, function(data){
  //do some stuff, then call the below function

.

$.get("http://server.company.com/sub/dir/file.html", function(data){
    alert(data);  //this never fires
});

JSON 部分は正常に処理されています。HTML部分は何もしていません。Firebug によると、ページは正しく (200) 返されたようですが、データを取得していません。

JSON ファイルと他のプレーンな HTML ページは同じサーバー上にあり、ディレクトリが異なるだけなので、ドメイン関連の問題ではないと思います。最初に、次を使用してデータを取得しようとしました。

var req = new XMLHttpRequest();  
req.open("GET", "http://server.company.com/sub/dir/file.html", false);  
req.send(); 

しかし、何らかの理由で、Firefox と Chrome の両方が req.send() で吠えます。私の調査では、これは (クロス) ドメインに関連する問題であると考えられました。ブラウザは、ページがドメイン外のデータを要求していると考えています (すべての関係者は、「company.com」で終わる同じドメインにあります)。

$.get が機能しないのはなぜですか? また、XMLHttpRequest.send() エラーを取り除くにはどうすればよいですか?

4

1 に答える 1

1

クロスドメインajaxは、getJSON関数で使用されるJSONPでのみ使用できます。

于 2013-01-25T19:55:15.127 に答える