首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AngularJS联系人表单返回"TypeError:$http.post(...).success is not a function“

AngularJS联系人表单返回"TypeError:$http.post(...).success is not a function“
EN

Stack Overflow用户
提问于 2018-12-07 04:37:02
回答 1查看 120关注 0票数 2

在我的AngularJS应用程序中,我构建了一个联系人表单,但当我尝试发送电子邮件时,收到以下错误

代码语言:javascript
复制
TypeError: $http.post(...).success is not a function

不确定这是AngularJS问题还是错误代码。

我在网上搜索了一下,大多数人都有同样的问题,得到的答案如下

不再有$.post().success方法

我该怎么做才能用我的代码发送电子邮件?

my fromController

代码语言:javascript
复制
app.controller("formCtrl", ['$scope', '$http', function ($scope, $http) {
        $scope.url = 'app/form/mailer.php';
        $scope.formsubmit = function (isValid) {

            if (isValid) {

                $http.post($scope.url, {"name": $scope.name, "email": $scope.email, "phone": $scope.phone}).
                        success(function (data, status) {
                            $scope.status = status;
                            $scope.data = data;
                            $scope.result = data; // Show result from server in our <pre></pre> element
                        })
            } else {
                alert('Form is not valid');
            }

        }

    }]);

我的邮件程序

代码语言:javascript
复制
    <?php

$post_data = file_get_contents("php://input");
$data = json_decode($post_data);

//Just to display the form values
echo "Name : " . $data->name;
echo "Email : " . $data->email;
echo "phone : " . $data->phone;

// sned an email
$to = $data->email;

$subject = 'Test email from phpcodify.com to test angularjs contact form';

$message = $data->phone;

$headers = 'From: ' . $data->name . 'info@rapio.nl' . "\r\n" .
        'Reply-To: info@rapio.nl' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

//php mail function to send email on your email address
mail($to, $subject, $message, $headers);

?>

表单

代码语言:javascript
复制
<form  name="userForm"  class="well form-search"   >
        <br/>
        <md-content class="md-no-momentum">
          <md-input-container class="md-icon-float md-block">
            <!-- Use floating label instead of placeholder -->
            <label>Name</label>
            <md-icon md-svg-src="img/icons/ic_person_24px.svg" class="name"></md-icon>
            <input type="name" ng-model="name" class="form-control" id="name" required>
          </md-input-container>

          <md-input-container class="md-icon-float md-block">
            <md-icon md-svg-src="img/icons/ic_phone_24px.svg" class="phone"></md-icon>
            <input type="number" ng-model="phone" class="form-control" id="phone" required>
          </md-input-container>

          <md-input-container class="md-block">
            <!-- Use floating placeholder instead of label -->
            <md-icon md-svg-src="img/icons/ic_email_24px.svg" class="email"></md-icon>
            <input type="mail" ng-model="email" class="form-control" id="email" required>
          </md-input-container>
           <div>
              <md-button id="button" type="submit" ng-click="formsubmit(userForm.$valid)"  ng-disabled="userForm.$invalid"
               style="
                font-size: 24px;
                background-color: white;
                width: 100%;
                color: #de146d !important;">
                  Aanmelden
                </md-button>
            </div>

        </md-content>
      </form>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-07 04:46:43

从AngularJS V1.6开始,这些方法已被删除。而必须使用then(...)方法。

您可以在此question中找到更多信息

你可以这样做:

代码语言:javascript
复制
$http
.post($scope.url, {"name": $scope.name, "email": $scope.email, "phone": $scope.phone})
    .then(function (response)
        $scope.status = response.status;
        $scope.data = response.data;
        $scope.result = response.data; // Show result from server in our <pre></pre> element
    }, function (error){ ... })
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53659295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档