$ http.post通过angular提供404错误;

时间:2015-04-28 09:15:54

标签: javascript angularjs node.js rest nodemailer

http://52.11.14.57:9000/#/

联系表单应该发送电子邮件,但是console.log显示404错误,尽管数据是可见的。 Node.Js / Express和Angular:但是我使用带有角度的UI路由器......会导致冲突吗?

角。 app.js

app.controller("emailForm", ['$scope', '$http', function ($scope, $http) {
      $scope.user = {test: 1};

$scope.processForm = function(user) {

    console.log('Im in the controller');
    $http({
      method  : 'POST',
      url     : '/send',
      data    : $scope.user,
      dataType : "json",
      headers : { 'Content-Type': 'application/json' },

    });
}
 }]);

快递app.js:

app.post('/send',function(req,res){
 var transporter = nodemailer.createTransport({
    service: 'gmail',
    auth: {
        user: 'aeoneon@gmail.com',
        pass: '*****'
    }
});

var emailBody = '<div>Name: ' + req.user.name + '</div>' +
'<div>Email: ' + req.user.email + '</div>' +
'<div>Phone: ' + req.user.phone + '</div>' +
'<div>Message: ' + req.user.message + '</div>' +
'<div>Date: ' + (new Date()).toString() + '</div>'; 

var mailOptions = { 
    From: 'aeoneon@gmail.com',
    To: 'will@bluenightphoto.com',
    subject: 'Contact from website',
    html: 'emailBody'
};

console.log(mailOptions);
transporter.sendMail(mailOptions, function (error, info){
  if(error){
            console.log(error);
        }else{
            console.log('Message sent: ' + info.response);
        }
    });
});
});
});

形式:

            <form ng-controller="emailForm"  ng-submit='processForm(user)' >
       Name: <br><input type="text" ng-model="user.name" /><br><br>
E-mail: <br><input type="email" ng-model="user.email" /><br><br>
Phone:<br> <input type="tel" ng-model="user.phone" /><br><br>
Message: <br><textarea rows="4" cols="50" ng-model="user.message"> </textarea><br><br>
    {{user.phone}}

  </div>
  <div class="modal-footer">
    <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
    <button type="submit" ng-disabled="my_form.$invalid" class="btn btn-primary">Submit</button>
    </form>

3 个答案:

答案 0 :(得分:0)

好像你的app.post(&#39; / send&#39;,功能(req,res)&#39;功能不接受JSON。

如果您发送x-www-form-urlencoded值,则可以正常工作。

myarray

答案 1 :(得分:0)

答案很简单......

app.set('views', __dirname);
app.set('view engine', 'jade');
如果您没有设置任何内容,

Express不会默认为html5。我删除了大部分这些,因为我使用角度来处理我的所有路由,并且认为我不需要它。

如果存储任何相关模板(如电子邮件),请确保至少拥有视图引擎和目录集。显然,快递不会对你的角度路由器说多少。

答案 2 :(得分:-1)

url需要完整路径:

$scope.processForm = function(user) {

    console.log('Im in the controller');
    $http({
      method  : 'POST',
      url     : 'http://52.11.14.57:9000/send',
      data    : $scope.user,
      dataType : "json",
      headers : { 'Content-Type': 'application/json' },

    });
}

如果你在本地测试url将是 - &gt; http://localhost:PORT/send