サーバーでホストされているjsonファイルがあります。 jsonファイルにAjaxの「GET」リクエストを作成しようとすると、失敗します。
Safariのコンソールを参照してください。「リソースの読み込みに失敗しました」と表示されます。
Firebugは「200 OK」を表示しますが、応答は表示されません。 FirebugでもJSONタブは表示されません。
これは、AJAXを使用したクロスドメインリクエストが許可されていないためだと思います。
どうすればこれを克服できますか?また、サーバーでクロスドメインリクエストを有効にしたい場合、crossdomain.xml
ファイルまたは何かを作成する必要があります。よくわかりませんが、これは私が知っていることです。 Googleで検索しましたが、関連するリンクが見つかりませんでした。
これで助けていただければ幸いです。
ありがとう。
PDATE:サーバー側のスクリプト言語(PHP、ASP.NETなど)は使用していません。私はプレーンHTMLとJavaScript/jQueryを使用しています。
PDATE-2:
次のコードを使用して、クロスドメインリクエストを作成しました。
<script src="jquery-1.6.2.js"></script>
<script>
$(document).ready(function () {
$.ajax({
dataType: 'jsonp',
data: '',
jsonp: 'jsonp_callback',
url: 'http://myhosting.net/myjsonfile.json',
success: function (jsonData) {
alert("success")
alert(jsonData);
},
error: function(errorObj) {
alert(errorObj.statusText);
},
});
});
Firebugの「Net」タブに表示されると、JSONタブが表示され、jsonの応答を確認できます。ただし、「成功」コールバックハンドラーは呼び出されませんが、「エラー」コールバックハンドラーが呼び出され、parseerror
というアラートが表示されます。
何が間違っているのでしょうか?
Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com
ターゲットサーバー上
pHPで:
header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");
サーバースクリプト言語を使用したくない場合:これを(Linux)コンソールに配置します
a2enmod headers
.htaccessファイルに を追加します
Header set Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com
これを。htaccessに入れると、プレーンなajaxが機能します
<ifModule mod_headers.c>
Header set Access-Control-Allow-Origin: *
</ifModule>
ジェネシスによって与えられたソリューションは私のために働いたが、URLの末尾のスラッシュを省略する必要がありました。すなわち:
header("Access-Control-Allow-Origin: http://yourdomain-you-are-connecting-from.com");