次のディレクトリ構造があるとします。
/web
example.html
example.js
/example.json
ブラウザで example.html を開くと、example.js が実行され、次の呼び出しを使用して example.json のデータを同期的にロードしようとします。
$.ajax({url: "file:///example.json",
dataType: "json",
async: false,
success: function(data) {
console.log(data)
},
error: function(request, status, error) {
console.log(request);
console.log(status);
console.log(error);
}
});
これにより、「制限付き URI へのアクセスが拒否されました」というメッセージとエラー コード 1012 のエラーが発生します。: 1012 . 最初のリンクでは、jQuery のgetJSONメソッドを使用するよう提案されていましたが、このメソッドは非同期でしか機能しません。2 番目のリンクは、ある種の JSONP コールバックを示唆していますが、これらがどのように機能するかを正確に理解することはできませんでした。
example.json を /web/example.json に移動すると、この問題は簡単に解決することに注意してください。ただし、実際の問題のいくつかの状況により、これを回避したいと考えています (ここで提示したのは、実際の問題を単純化したものです)。
編集: この JSONP コードを試していますが、まだ同じエラーが発生しています:
$.ajax({url: "file:///example.json",
dataType: "jsonp",
success: function(data) {
console.log(data)
},
error: function(request, status, error) {
console.log(request);
console.log(status);
console.log(error);
}
});