[英]Cant read a json file on my local server from my web-server
所以我在我的網絡服務器上有一個名為array.json的json文件,我打算在我的網絡應用程序本地(現在)讀取這個文件,然后在我上線后在另一個域上讀取,我自己創建了這個json文件這是它包含的數據。
{"h1": "cmPanel", "h2" : "cmAuto", "h3": 0}
當我試圖閱讀文件時,我沒有得到回復,為什么會這樣?
這是我讀取文件的代碼;
$.getJSON('http://www.foobar.com/array.json', function(data){
alert(data);
});
我也試過添加&callback=?
我仍然沒有收到任何東西,請你協助!
由於瀏覽器安全限制,大多數“Ajax”請求都遵循相同的原始策略 ; 請求無法從其他域,子域或協議成功檢索數據 。
腳本和JSONP請求不受相同的源策略限制。
要進行跨域ajax調用,您需要使用代理或JSONP 。 由於您已經為JSON設置,因此JSONP可能是最簡單的替代方案。 簡而言之,JSONP需要在函數調用中包裝JSON數據,以便以繞過同源策略的方式將其傳遞回調用腳本。
在您的情況下,您可以使用名為“myjsoncallback”的函數包裝您的json數據,使其看起來像這樣:
myjsoncallback({"h1": "cmPanel", "h2" : "cmAuto", "h3": 0})
然后將您的ajax調用更改為以下內容:
$.ajax({
url: 'http://www.foobar.com/array.json',
dataType: 'jsonp',
jsonpCallback: 'myjsoncallback', // Specify our callback function name
success: function(data) { console.log(data); }
});
您是否可以從Web應用程序訪問服務器? (同源政策)
要使用jsonp,您不能簡單地將回調添加到json文件的URL。 服務器應提供返回數據的函數。 您可以使用默認的html腳本標記包含此文件,然后執行返回的函數。
要查看返回的json,您需要檢查結果
$.getJSON('array.json', function(data){
var items = [];
$.each(data, function(key, val) {
items.push('Key = ' + key + '<br/>Value = ' + val + '<br/><br/>');
});
alert(items.join(''));
});
array.json應該提供適當的Content-Type:
text/javascript; charset=utf-8
text/javascript; charset=utf-8
如果使用回調
application/json; charset=utf-8
application/json; charset=utf-8
如果是普通的json
在這里看到服務JSONP的最佳內容類型?
避免“同源政策”出現問題
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.