簡體   English   中英

無法從我的網絡服務器讀取本地服務器上的json文件

[英]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請求不受相同的源策略限制。

有關同源政策的更多信息

要解決它,請查看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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM