2015-12-22 3 views
0

Я пытаюсь заменить свой $.ajax звонок $http.get(). Когда я пытаюсь, я получаю ошибку 404 Not Found.

Вот Аякса вызов:

// ToDo: See if there is an $http.get equivalent. That way the callback doesn't have 
    //  to be wrapped in $scope.apply(). 
    $.ajax({ 
     url: '/PrestoWeb/api/ping/responses/', 
     type: 'POST', 
     data: JSON.stringify(latestPingRequest), 
     contentType: "application/json", 
     success: function (responses) { 
      // do stuff 
     }, 
     error: function (jqXHR, textStatus, errorThrown) { 
      alert(errorThrown); 
     } 
    }); 

И это $ HTTP вызов:

var config = { 
     url: '/PrestoWeb/api/ping/responses/', 
     method: 'POST', 
     data: JSON.stringify(latestPingRequest), 
     contentType: "application/json" 
    }; 

    $http.get(config) 
     .then(function (response) { 
      // do stuff 
     }, function (response) { 
      alert(response); 
    }); 

Аякса вызов работы. Http-вызов не работает. URL-адрес, тип и данные являются точными в обоих вызовах. Что мне не хватает?

+6

Вы понимаете, '$ http.get' с' method: post' противоречиво, правильно? –

+2

Вы делаете сообщение в оригинальном звонке $ .ajax. Вы хотите сделать POST или GET? Если сообщение, то вы должны использовать $ http.post (config) –

+0

Я пробовал $ http.post (config), и я получаю ту же ошибку 404. –

ответ

2

Мне кажется, что проблема связана с использованием $http.get вместо $http.post. Объект $ http имеет некоторые вспомогательные методы для общих глаголов http, например. $ http.get, $ http.post, $ http.put, который установит метод на имя сокращенной строки. Вспомогательный метод для пост ожидает три параметра, URL-адрес, данные и объект конфигурации, так что ваш вызов будет выглядеть, $http.post('/PrestoWeb/api/ping/responses/', latestPingRequest, config)

В вашем случае вы указываете method: 'POST' в вашем объекте конфигурации HTTP, но затем использовать метод $http.get, который будет введите запрос на получение вместо того, что вы указали в своем объекте конфигурации.

Поскольку вы указали метод в своем объекте конфигурации, вы можете просто использовать $http(config) и полностью пропустить вспомогательные методы. Я действительно предпочитаю делать так, как ваш полный запрос определяется в объекте конфигурации, а не в объекте и методе конфигурации. У вспомогательных методов также есть разные подписи, которые сбивают с толку. Легче просто придерживаться $ http (config) IMO

+0

Спасибо! Это было полезно! Я чему-то научился, и это то, о чем должно думать SO. –

+0

Добро пожаловать :) –