【发布时间】:2014-07-27 02:40:35
【问题描述】:
我正在尝试使用 AngularJS 向我的 ExpressJS 服务器发送请求:
angular.module('app').controller('contactCtrl', function($scope, $http) {
$scope.envoyer = function(nom, organisation, courriel, telephone, message){
$http.post('/contact', {nom:nom, organisation:organisation, courriel:courriel, telephone:telephone, message:message}).then(function(error, response){
if(response.data.success){
console.log('sent!');
}
});
}
});
这是来自服务器的代码:
var mailer = require('nodemailer');
var EMAIL_ACCOUNT_EMAIL = 'aaa@gmail.com';
var EMAIL_ACCOUNT_PASSWORD = 'aaa';
var smtpTransport = mailer.createTransport({
service: "Gmail",
auth: {
user: EMAIL_ACCOUNT_EMAIL,
pass: EMAIL_ACCOUNT_PASSWORD
}
});
app.post('/contact', function(req, res, next){
var success = true;
var mailOptions = {
to: 'azez@email.com',
subject: 'qsdxwccvfd',
html: 'sqdqsdq'
};
smtpTransport.sendMail(mailOptions, function(error, res){
if(error){
console.log('[ERROR] Message NOT sent: ', error);
success = false;
} else {
console.log('[INFO] Message sent: ' + res.message);
}
next(error, success);
});
});
服务器执行请求后,我在客户端收到此错误消息:
POST http://localhost:3002/contact 404 (Not Found) angular.js:8495
(anonymous function) angular.js:8495
sendReq angular.js:8291
$http.serverRequest angular.js:8025
wrappedCallback angular.js:11498
wrappedCallback angular.js:11498
(anonymous function) angular.js:11584
Scope.$eval angular.js:12608
Scope.$digest angular.js:12420
Scope.$apply angular.js:12712
(anonymous function) angular.js:18980
jQuery.event.dispatch jquery.js:4409
elemData.handle
我认为它来自 AngularJS 代码的第四行,但我无法找到解决方法。请问我该如何解决?
【问题讨论】:
-
服务器提示
http://localhost:3002/contact没有资源。你期待有什么东西在那里吗?什么代码提供了该端点的实现? -
/contact的中间件不返回响应。假设这是整个服务器代码(并且没有稍后的中间件处理它),那么对next的调用将返回您的 404。如果您想要一个返回 JSON 数据供客户端解析的示例,请告诉我我可以写一个,假设那是一个express应用程序。 -
@MartinAtkins,事实上,当发送的电子邮件有效时,我试图在客户端显示一个 toastr 通知,我如何在响应中设置一个成功属性并显示一个 toastr另一边的通知?
-
@MartinAtkins,你说得对,我正在使用 expressjs。
标签: javascript node.js angularjs express