发送帖子请求并收到错误“未定义不是函数”

时间:2014-07-29 14:22:17

标签: javascript angularjs http-post

我创建了一个AngularJs应用程序。

我有一个控制器,当我点击特定按钮时,我需要向服务器发送信息。 控制器有一个名为" button_clicked"

的功能
$scope.button_clicked = function () {

    1     var currentObject = $scope.getCurrentObject;

    2    $http.post(ENV.server_prefix + 'object/addObject/', currentObject)
    3        .then(function (data, status) {
    4          //Doing something!!
    5       }).error(function (data, status, params) {
    6           alert(data);
    7       });
    };

当我运行代码时,执行回调。但是在控制台中出现错误: " undefined不是一个函数"它指向第5行

为什么会出现此错误以及如何处理?

2 个答案:

答案 0 :(得分:3)

尝试使用success

$scope.button_clicked = function () {

     var currentObject = $scope.getCurrentObject;

    $http.post(ENV.server_prefix + 'object/addObject/', currentObject)
        .success(function (data, status) {
          //Doing something!!
       }).error(function (data, status, params) {
           alert(data);
       });
};

使用then时,错误处理程序应作为第二个参数传递:

$http.post(ENV.server_prefix + 'object/addObject/', currentObject)
    .then(function (data, status) {
      //Doing something!!
   }, function (data, status, params) {
       alert(data);
});

答案 1 :(得分:2)

你在这里混淆了then的语法。如果使用then,它需要两个参数,第一个是成功处理程序,第二个是错误处理程序。

$scope.button_clicked = function () {

    var currentObject = $scope.getCurrentObject;

    $http.post(ENV.server_prefix + 'object/addObject/', currentObject)
        .then(function (data, status) {
                //Doing something!!
            }, function(data, status, params) {
                alert(data);
            });
    });
};