2016-07-26 2 views
0

私はYouTubeの一連のAngular動画を実行していましたが、.successは非推奨で、代わりに.thenを使用していました。 .jsonファイルと.txtファイルの両方を使用して404エラーが発生します。私はブラウザを言及した人がローカルファイルが他のローカルファイルにアクセスするのを許可しないので、.txtを使って試しました。

これは私が両方httpsterと構築されたブラケットを使用してを使用してテストしてみました。これは、JSONLint

[{ 
    "name": "Yoshi", 
    "belt": "green", 
    "rate": 50, 
    "available": true, 
    "thumb": "content/img/yoshi.png" 
}, { 
    "name": "Crystal", 
    "belt": "yellow", 
    "rate": 30, 
    "available": true, 
    "thumb": "content/img/crystal.png" 
}, { 
    "name": "Ryu", 
    "belt": "orange", 
    "rate": 10, 
    "available": true, 
    "thumb": "content/img/ryu.png" 
}, { 
    "name": "Shaun", 
    "belt": "black", 
    "rate": 1000, 
    "available": true, 
    "thumb": "content/img/shaun.png" 
}] 

を通じて有効である私の.jsonファイルである瞬間

$http.get('data/ninjas.txt').then(function(response) { 
     // Success!!! 
     $scope.ninjas = response.data; 
    }); 

で私が持っている$のhttpリクエストでありますライブプレビューで。

それが助け場合

enter image description here

、これは私の全体のapp.jsファイル

var myNinjaApp = angular.module('myNinjaApp', ['ngRoute']); 

myNinjaApp.config(['$routeProvider', function($routeProvider){ 
    $routeProvider 
     .when('/home', { 
     templateUrl: 'views/home.html' 
    }) 
     .when('/directory', { 
     templateUrl: 'views/directory.html', 
     controller: 'NinjaController' 
    }) 
     .otherwise({ 
     redirectTo: '/home' 
    }); 
}]); 

myNinjaApp.controller('NinjaController', ['$scope', '$http', function($scope, $http){ 

    $scope.removeNinja = function(ninja){ 
     var removedNinja = $scope.ninjas.indexOf(ninja); 
     $scope.ninjas.splice(removedNinja, 1) 
    }; 

    $scope.addNinja = function(){ 
     $scope.ninjas.push({ 
      name: $scope.newninja.name, 
      belt: $scope.newninja.belt, 
      rate: parseInt($scope.newninja.rate), 
      available: true 
     }); 

     $scope.newninja.name = ""; 
     $scope.newninja.belt = ""; 
     $scope.newninja.rate = ""; 
    }; 

    $http.get('data/ninjas.txt').then(function(response) { 
     // Success!!! 
     $scope.ninjas = response.data; 
    }); 

}]); 
+0

の子フォルダである、あなたのテンプレートが見解/ * 'で始まるロードされ、あなたのルート設定、に見られますninjas.txtファイルはninjas.jsonファイルですか? – JoeriShoeby

+0

@JoeriShoeby私は両方とも404を試しました。ローカルブラウザ/ローカルホストを実行するときにJSONの解釈に問題がありますが、何らかの理由でファイルを.txtまたは.htmlファイルにするという別の質問があります。私は.jsonファイルを持っていて、それも試みました。どちらも404. – OMGDrAcula

+1

あなたのパスはindex.htmlまたはapp.jsファイルからの相対パスですか? 'app/data/ninjas.json'を使ってみてください – JoeriShoeby

答えて

2

ようにすることです私は404エラーを取得しますが、ファイルは画像で見ることができるように確かに存在するために行います答えが完了しました

あなたのアプリケーションのルートは「index.html」で、Angularは 'index.html'内で実行されているため、ファイルにロードするすべてのファイルは 'index.html'に相対的です。

ではありませんなぜその一例は、あなたの「index.htmlを」

+0

答えを投稿していただきありがとうございます! – OMGDrAcula

+1

htm5Modeルーティングを使用すると完全に正確ではありません。 urlパスに相対的です。また、 'views'はインデックスの兄弟です – charlietfl

+1

あなたは間違いなく正しいですが、わかるように彼はそれを使用していません。 – JoeriShoeby

0
myNinjaApp.controller('NinjaController', ['$scope', '$http', function ($scope, $http) { 

    $http({ 
     url: "data/ninjas.json", 
     method: "GET" 
    }).then(function (resp) { 
     $scope.ninjas = resp; 
    }, function (resp) { 
     // bla bla bal 
    }); 

    $scope.removeNinja = function (ninja) { 
     var removeNinja = $scope.ninjas.indexOf(ninja); 
     $scope.ninjas.splice(removeNinja, 1); 
    } 

    $scope.addNinja = function() { 
     $scope.ninjas.push({ 
      name: $scope.newninja.name, 
      belt: $scope.newninja.belt, 
      rate: parseInt($scope.newninja.rate), 
      available: true 
     }); 
     $scope.newninja.name = ""; 
     $scope.newninja.belt = ""; 
     $scope.newninja.rate = ""; 
    }; 

    $scope.removeAll = function() { 
     $scope.ninjas = []; 
    }; 

    $scope.sort = function (keyname) { 
     $scope.sortKey = keyname; 
     $scope.reverse = !$scope.reverse; 
    } 

}]); 
+1

このコードは質問に答えるかもしれませんが、どのようにして問題が解決されるのか、なぜそれが解決するのかについての追加的な文脈を提供することで、回答の長期的価値が向上します。 –

関連する問題