Подтвердить что ты не робот

Angular.js $http.post не работает - нет ошибки

Я пытаюсь представить новый комментарий, используя $http. Возможно, вы догадались, что это из названия: он не работает. Я попробовал версию для берега и длинную версию, оба потерпели неудачу. Ошибка консоли.

Это мой код:

$scope.comment = {};
$scope.comment["comment"] = message; // message defined somewhere else

$http.post('/api/items/'+$scope.item.id+'/comments', $scope.comment)
    .success(function(data, status, headers, config) {
         // this isn't happening:
         console.debug("saved comment", $scope.comment);
    })
    .error(function(data, status, headers, config) {
         // this isn't happening:
         console.debug("saved comment", $scope.comment);
    })
}

Кто-нибудь понял, как это сделать? Спасибо!

UPDATE:

Теперь я делаю это как вызов jQuery ajax, который работает нормально. Было бы неплохо заставить его работать с angular. Это мой код JQuery:

            var request = $.ajax({
                url: '/api/items/'+$scope.item.id+'/comments',
                type: "POST",
                data: JSON.stringify($scope.comment),
                contentType: 'application/json; charset=utf-8',
                dataType: "json"
            });

            request.done(function(msg) {
                console.debug("saved comment", $scope.comment);
            });

            request.fail(function(jqXHR, textStatus) {
                alert( "Request failed: " + textStatus );
            });

Если у кого-нибудь есть идеи, как угасить это, пожалуйста, скажите мне, было бы хорошо сделать это надлежащим образом....

4b9b3361

Ответ 1

Пробовал ли вы конкретно настраивать Content-Type перед тем, как сделать запрос?

У меня была такая же проблема, и настройка Content-Type исправила его.

$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";

Ответ 2

Возможно, это поможет вам. У меня была аналогичная проблема с вызовом: AngularJS $http не запускать вызов

Я решил это с помощью решения, найденного здесь https://github.com/angular/angular.js/issues/2794#issuecomment-18807158, поэтому я отключил свою функцию вызова с помощью $scope. $apply.

$scope.$apply(function() {
                console.log('Klic na ID ' + data.context.id);
                $scope.commonController.getData('orgunit/' + data.context.id + '?jsonDepth=3')
                    .success(function(workpositionData,status,headers,config) {
                        console.log('Klic na ID ' + data.context.id + ' OK');
                        $scope.workPositions = workpositionData.workPositions;
                    }).error(function(data,status,headers,config) {
                        commonController.error('Pri branju delovnih mest je prišlo do napake: '+data.description);
                    });
            });

Ответ 3

Я думаю, ты просто забыл о некоторых жестоких ")" попробуйте

$http.post('/api/ideas/'+$scope.item.id+'/comments', $scope.comment)
   .success(function(data, status, headers, config) {
     // this isn't happening:
     console.debug("saved comment", $scope.comment);
   })  //<-- damn ")"
   .error(function(data, status, headers, config) {
     // this isn't happening:
     console.debug("saved comment", $scope.comment);
   }) //<--- damn ")"
 }

Я еще не тестировал его, но я уверен, что это ошибка рассматривает

Ответ 5

Вам нужно инициализировать контроллер с помощью объекта $http. То же самое касается других сервисов Angular, которые вы хотите использовать.

например:.

function myCtrl($scope, $http) {
  // controller code
}

Ответ 6

Вы можете попробовать.

Angular js post call:

$http({
        url:'/api/ideas/'+$scope.item.id+'/comments', $scope.comment,
        method : 'POST'
    }).success(function(data, status, headers, config){
    }).error(function(data, status, headers, config){
    });

Контроллер отдыха:

@RequestMapping
    (value = "/api/ideas/{item_id}/comments/{comment}", method = RequestMethod.POST)
    @ResponseStatus(HttpStatus.OK)
    public void updateComments(@PathVariable String item_id,@PathVariable String comment) {
        }

Ответ 7

Я боролся с той же проблемой. То, как я решил, это использовать .then() и регистрировать успешные и обратные вызовы ошибок в качестве аргументов. В вашем случае:

$http.post('/api/items/'+$scope.item.id+'/comments', $scope.comment)
  .then(
    // success callback
    function(response) {
      console.debug("success - saved comment", $scope.comment);
    },
    // error callback
    function(response) {
      console.debug("error - saved comment", $scope.comment);
   }
);

Ответ 8

$http.post('/api/ideas/'+$scope.item.id+'/comments', $scope.comment).success(function(data, status, headers, config) {}).error(function(data, status, headers, config) {});

Ответ 9

angular.module('RestService', [

]).factory('$RestService', [
    '$http', 'ApiUrl',
    function ($http, ApiUrl) {
        return {          
            Functioname: function (request) {
                var Requesturl = ApiUrl + "/Functionname";//www.test.com/getuserdata
                return this.Post(Requesturl, request);//request :parameter which you want to pass in post request
            },
            Post: function (ResultUrl, RequestParameterData) {
                var PostResponse = $http({
                    url: ResultUrl,
                    method: "POST",
                    dataType: "",
                    headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
                    data: RequestParameterData
                });
                return PostResponse;
            },
            Get: function (ResultUrl, RequestParameterData) {
                var PostResponse = $http({
                    url: ResultUrl,
                    method: "GET",
                    dataType: "",
                    headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
                    data: RequestParameterData
                });
                return PostResponse;
            }

        };
    }


]);