2014-10-30 44 views
29

我是angularjs的新手,我一直在網上搜索一整天,只是爲了從本地json文件中獲取數據而不必爲本地web應用使用本地主機。不幸的是,我還沒有找到任何。我嘗試使用$ http.get,但我得到Cross Origin *錯誤。Angularjs訪問本地json文件

是否有其他方式可以從本地json文件中獲取數據,而無需在本地託管我的webapp?

angularjs是否有任何其他函數從本地json文件獲取數據而不必使用其$ http.get?

+1

我沒有得到你建議的鏈接的相關性。我已經知道了。我只問Angularjs是否有能力讀取像vanillajs的jsonp.fetch(url)函數那樣的本地JSON文件。 – Jibo 2014-10-31 02:06:00

+0

你所有的(@ Re-l,@ivarni,@ Second Rikudo)建議重複與這個問題似乎沒有關係。 我的理解是,這個問題與使用'Angular.JS' **框架**的方法有關。 Angular.JS仍然是JavaScript,但有自己的方法,可能與**原生JavaScript **不同。 – 2014-10-31 02:31:38

+0

@JennyCasarino Angular是Javascript。它受適用於Javascript的相同規則的限制。如果你不能在Javascript中做某些事情,那麼你不能在Angular中做。它涉及到沙箱時,它不會與本地JavaScript有所不同。 – ivarni 2014-10-31 05:11:11

回答

5

您需要將您的應用程序部署到某個http服務器,最簡單的方法是使用節點,這裏是示例https://www.npmjs.org/package/http-server,或者您可以更改瀏覽器的安全設置。

+0

但這仍然意味着我會在本地託管它。正在開發的webapp需要json在本地,這樣當沒有互聯網連接時,我仍然可以看到某些東西。本地方寫這個json文件。這是一種混合類型的應用程序。 – Jibo 2014-10-30 10:13:35

+0

這是Chrome擴展嗎?有問題,你不能從本地系統加載文件,如果你加載文件與用戶交互,你可以進行文件輸入,所以用戶可以加載該json,或將值存儲到本地存儲,這將是一個很大的安全問題。 – Grissom 2014-10-30 10:24:14

+0

所以不像普通的老js。 angularjs沒有任何像jsonp.fetch(url)的地方,我可以從本地json文件中獲取數據? – Jibo 2014-10-30 10:33:03

30

你可以參考JSON文件稱他們與GET方法,像這樣:

$http.get('phones/phones.json').success(function(data) { 
    $scope.phones = data; 
}); 

檢查official AngularJS tutorial看到你在做什麼錯。

更新:

對於角度1.6+success方法不再有效而使用then

$http.get('phones/phones.json').then(function(data) { 
    $scope.phones = data; 
}); 

參考源here

+4

我已經試過了。它仍然給我起源*錯誤 – Jibo 2014-10-30 09:43:33

+0

如果您對代碼有疑問,請發佈您的代碼或編寫小提琴。也許你錯過了在你的控制器上使用'$ http'。這是一個常見的錯誤。 – Kutyel 2014-10-30 09:45:51

+0

var app = angular.module(「MyApp」,[]); (「範圍」,「$ http」,函數($ scope,$ http) { $ http.get('json/producttable.json')。success(function(數據){ $ scope.mydata = data; }); }] ); – Jibo 2014-10-30 09:55:36