2016-03-29 3 views
-2

Привет Я хочу, чтобы получить данные из моего файла JSON с помощью метода POST (который работает 5n методом GET)

'use strict'; 
angular.module('myapp').controller('lastWeekWinners',function($http){ 
    var vm= this; 
    $http.post('http://localhost:9000/json/sample.json').then(function(data){ 
     vm.winnerData=data.data.data; 
    },function(error){ 
     console.log(error); 
    }); 
}); 

о коде является дать ошибку

enter image description here

, который означает мы не можем использовать метод столба, чтобы получить данные

+0

Прочтите сначала: https://docs.angularjs.org/api/ng/service/$http – NMSL

+1

Не используйте $ http-звонки в контроллерах, используйте службы для такого вопроса. –

+0

Ваш API не поддерживает POST? он дает ошибку 404 – S4beR

ответ

0

Прежде всего, разница между GET/POST:

GET используется для получения данных, POST используется для сохранения (и иногда обновления) данных. Поэтому, если вы просто хотите получить json, используйте GET.

Что касается конкретной проблемы, возникшей здесь, если вы внимательно посмотрите, вы получите код 404. это означает, что маршрут не найден. (Вы можете узнать больше о статусе HTTP-кода здесь: http://www.restapitutorial.com/httpstatuscodes.html)

Не знаете, какой сервер вы используете, но обычно вы определяете не только маршрут, но и глагол маршрута (GET/POST/PUT/DELETE), так что если у вас есть маршрут определяется как:

GET/пользователей/

Это будет работать только для запросов GET, если вы пытаетесь опубликовать на том же маршруте вы получите 404 . Вы должны определить тот же маршрут для глагола POST.

Вы можете прочитать больше о HTTP глаголов здесь: http://www.restapitutorial.com/lessons/httpmethods.html

0

Это, как вы можете использовать метод пост в контроллере:

'use strict'; 
angular.module('myapp').controller('lastWeekWinners', controller){ 

function controller($scope,fetch){ 
    var vm= this; 
    vm.show = show; 
} 
function show() { 

     return fetch.show() 
     .then(function successCallback(data){   

      vm.winnerData = data; 
     } 
     }, function errorCallback (response) { 
      console.log(response.statusText); 
     }); 
    } 

}); 

и в службе:

angular 
    .module('service',[]) 
    .service('fetch', Service); 
function Service($http) { 
    var fetch = {  
     show : show 
    } 
    return fetch; 
    function show() { 
     return $http.get('http://localhost:9000/json/sample.json') 
     .then(getShowComplete) 
     .catch(getShowFailed); 

     function getShowComplete(response){ 
      return response.data; 
     } 
     function getShowFailed(error){ 
      console.log("Error:" + error); 
     } 
    } 
+0

Я даю данные: '', потому что это просто файл json, который я хочу получить. –

+0

используйте угловую службу и метод Get, если хотите получить данные! – Hansanho

+0

обновленный ответ! – Hansanho

0

Чтобы сделать $http.post, вам нужен API-интерфейс (PHP, Node Js и т. Д.), Эта система поймает нужные данные и сохранит их в db или JSON (метод чтения/записи). Статические данные JSON просто читаются только, чтобы не писать.

или используемый браузер $window.localStorage для сохранения данных.

Смежные вопросы