2015-04-28 83 views
0

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: '[email protected]', 
     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: '[email protected]', 
    To: '[email protected]', 
    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> 
+0

你可以分享你在控制台中看到的确切的404错误。 – Zee

+1

在什么港口表达js正在倾听?是否没有包含发送的组?添加/发送路由后是否重新启动服务器? – vanadium23

+0

您的代码中的gmail用户和密码是否是假的? ;)如果不是,我可以建议你尽快改变它吗? –

回答

-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' }, 

    }); 
} 

,如果你是在本地测试网址将是 - >http://localhost:PORT/send

0

看起来像你的'app.post('/ send',函数(req,res)'函数不接受JSON。

如果您发送x-www-form-urlencoded值,它将起作用。

$http({ 
    method : 'POST', 
    url  : '/send', 
    data : 'test=' + $scope.user.test + '&' + 'email=' + $scope.user.email + '&' + 'name=' + $scope.user.name + '&' + 'message=' + $scope.user.message 

}); 
0

回答很干脆....

app.set('views', __dirname); 
app.set('view engine', 'jade'); 

Express不默认为HTML5,如果你不设置任何东西。我删除了其中的大部分,因为我正在使用angular来处理所有的路由,并不认为我需要它。

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