2016-05-17 1 views
1

Вот мой index.htmlУгловая форма контакта - не определено поле после того, как после отправки

<div data-ng-controller="help"> 
<div id="messages" class="alert alert-success" data-ng-show="messages" data-ng-bind="messages"></div> 
<div data-ng-show="progress.active()" style="color: red; font-size: 50px;">Sending&hellip;</div> 
<form name="helpForm" novalidate role="form"> 
    <div class="form-group"> 

    <label for="name">Your Name </label> 
    <span class="label label-danger" data-ng-show="submitted && helpForm.name.$error.required">Required!</span> 
    <input type="text" name="name" data-ng-model="userName" class="form-control" required /> 
    </div> 

    <div class="form-group"> 
    <label for="email">Your E-mail address</label> 
    <span class="label label-danger" data-ng-show="submitted && helpForm.email.$error.required">Required!</span> 
    <span class="label label-danger" data-ng-show="submitted && helpForm.$error.email">Invalid email!</span> 
    <input type="email" name="email" data-ng-model="userEmail" class="form-control" required /> 
    </div> 

    <div class="form-group"> 
    <label for="message">Message</label> 
    <span class="label label-danger" data-ng-show="submitted && helpForm.message.$error.required">Required!</span> 
    <textarea name="message" data-ng-model="userMessage" class="form-control" required></textarea> 
    </div> 

    <button data-ng-disabled="progress.active()" data-ng-click="submit(helpForm)" class="btn btn-default">Submit</button> 
</form> 

И часть моих app.js

angular.module('myApp', ['ajoslin.promise-tracker']) 


.controller('help', function ($scope, $http, $log, promiseTracker, $timeout) { 
    $scope.subjectListOptions = { 
     'bug': 'Report a Bug', 
     'account': 'Account Problems', 
     'mobile': 'Mobile', 
     'user': 'Report a Malicious User', 
     'other': 'Other' 
    }; 

$scope.progress = promiseTracker(); 

$scope.submit = function(form) { 

     $scope.submitted = true; 


     if (form.$invalid) { 
     return; 
     } 



var $promise = $http({ 
     method: 'POST', 
     url:'api/contactUs', 
     params: { 
      'callback' : 'JSON_CALLBACK', 
      'userName' : $scope.userName, 
      'userEmail' : $scope.userEmail, 
      'userMessage' : $scope.userMessage 
     } 

    }) 
     .success(function(data, status, headers) { 
     if (data.status == 'OK') { 
     $scope.userName = null; 
     $scope.userEmail = null; 
     $scope.userMessage = null; 
     $scope.messages = 'Your form has been sent!'; 
     $scope.submitted = false; 
     } else { 
     $scope.messages = 'Oops, we received your request, but there was an error processing it.'; 
     $log.error(data); 
     } 
    }) 
    .error(function(data, status, headers) { 
     $scope.progress = data; 
     $scope.messages = 'There was a network error. Try again later.'; 
     $log.error(data); 
    }) 
    .finally(function() { 

     $timeout(function() { 
     $scope.messages = null; 
     }, 9000); 
    }); 

После отправки письма по почте, все поля (имя, адрес электронной почты, сообщение) в форме отображаются как «Undefined»

Я использую сервер node.js и подключаю через api (api/contactUs)

Я не понимаю, в чем проблема, уже попробовал все, что мог, но ошибка остается.

Помогите с решением этой проблемы.

Спасибо заранее!

+0

Вы пробовали настройки '$ scope.userName',' $ scope.userEmail' и так далее в ' ''' вместо 'null'? –

+0

Да, к сожалению, также не работает ( – Jameson

+0

Можете ли вы разместить свой код для отправки? (Функция submit (helpForm)) – Silvinus

ответ

0

Когда вы используете метод POST, вы должны передать объект data вместо объекта params.

Изменить это:

params: { 
    'callback' : 'JSON_CALLBACK', 
    'userName' : $scope.userName, 
    'userEmail' : $scope.userEmail, 
    'userMessage' : $scope.userMessage 
} 

Для этого:

data: { 
    'callback' : 'JSON_CALLBACK', 
    'userName' : $scope.userName, 
    'userEmail' : $scope.userEmail, 
    'userMessage' : $scope.userMessage 
} 
Смежные вопросы