2015-11-17 7 views
14

Ich möchte Daten von JSON-Datei abrufen, die auf meinem lokalen Computer ist. Aber ich bin nicht in der Lage, die Daten zu bekommen. Es zeigt einige Cross-Domain-Fehler für $ http.Fetchin-Daten von lokaler JSON-Datei in angularjs

Hier ist mein Code.

angular.module('myApp',[]).controller('myCtrl', function ($scope, webtest) {webtest.fetch().then(function (data) {$scope.accounttype = data;})}); .factory('webtest', function($q, $timeout, $http) {var Webtest = { 
    fetch: function(callback) { 
     return $timeout(function() { 
      return $http.get('webtest.json').then(function(response) { 
       return response.data; 
      }); 
     }, 30); 
    } 
}; 
return Webtest;}); 

Bitte helfen Sie mir, wie Sie Daten aus lokalen JSON-Datei anzeigen? Vielen Dank im Voraus.

+0

können Sie eine Geige hinzufügen] – Shreyas

+0

könnten Sie uns auch den spezifischen Fehler zeigen? – xeon48

Antwort

24

AngularJS < 1,6

Versuchen durch Rück Erfolg und Misserfolg Aufruf geben:

$http.get('someFile.json') 
     .success(function(data) { 
      angular.extend(_this, data); 
      defer.resolve(); 
     }) 
     .error(function() { 
      defer.reject('could not find someFile.json'); 
     }); 

AngularJS> 1,6

$http.get('someFile.json'). 
    then(function onSuccess(response) { 
    angular.extend(_this, data); 
    defer.resolve(); 
    }). 
    catch(function onError(response) { 
    console.log(response); 
    }); 

Siehe: Read local file in AngularJS

+3

.success ist veraltet. Benutze dann stattdessen;) – LOTUSMS

1

Wenn Sie dies noch nicht getan haben. Versuchen Sie, eine crossdomain Richtlinie für Ihre Anwendung einzurichten.

2

Haben Sie keine Fehlermeldung wie "$ http: ist nicht definiert"?

ich mit einem Controller versucht, das funktioniert:

var ngApp = angular.module("ngApp", []); 

ngApp.controller('myController', ['$http', function($http){ 
    var thisCtrl = this; 

    this.getData = function() { 
    this.route = 'webtest.json'; 
    $http.get(thisCtrl.route) 
    .success(function(data){ 
     console.log(data); 
    }) 
    .error(function(data){ 
     console.log("Error getting data from " + thisCtrl.route); 
    }); 
    } 
}]); 

Wenn Sie nicht, verwenden Web-Entwickler-Tools (Strg + Umschalt + I in Firefox).

+1

Ich bekomme diese Fehler-> XMLHttpRequest kann nicht laden file: /// C: /Users/Handson/webtest.json. Cross-Ursprungsanforderungen werden nur für Protokollschemata unterstützt: http, data, chrome, chrome-extension, https, chrome-extension-resource – Amit

+0

Ich schätze, es liegt daran, dass Sie nicht berechtigt sind, auf lokale Dateien zuzugreifen (Sicherheitsgründe). Sie sollten einen lokalen Webserver (wie Apache) verwenden, um diese Art von Fehler zu vermeiden. – Pico12