我在角度
中有这个功能controller: function ($scope, $http) {
$scope.sendEMail = function (referal) {
// console.log('referal: ', referal);
$http({
url: '/send-referal',
method: "POST",
data: referal
}).then(function (response) {
console.log('success', response);
},
function (response) { // optional
console.log('error', response);
});
};
}
现在.then
没有执行。
在express的服务器端,我有这样的端点:
app.post('/send-referal', function (req, res) {
console.log('data: ', req.body);
var html = "my html template";
var helper = require('sendgrid').mail;
var from_email = new helper.Email(req.body.email);
var to_email = new helper.Email('foo@bar.com');
var subject = 'Subject for referal form';
var content = new helper.Content('text/html', html);
var mail = new helper.Mail(from_email, subject, to_email, content);
var sg = require('sendgrid')('api key here');
var request = sg.emptyRequest({
method: 'POST',
path: '/v3/mail/send',
body: mail.toJSON(),
});
sg.API(request, function(error, response) {
console.log(response.statusCode);
console.log(response.body);
console.log(response.headers);
});
});
这是sendgrid为您提供的正常示例。该功能正常发送电子邮件,但在客户端我根本没有得到任何回复,所以我可以告诉用户该电子邮件已发送。
如何获取$http
请求以触发.then
操作?
答案 0 :(得分:3)
您必须使用process.env.backendUrl = 'http://localhost:8080';
export const environment = {
production: false
};
从服务器发回响应,如下所示
res.json
答案 1 :(得分:1)
你的$ http电话有一些问题。一旦你修复它们,你会发现更多关于这个电话的信息,如果后端很好(看起来很好),这将解决问题。
您正在向then
传递2个函数(成功和错误处理函数)。您应该将错误函数传递给catch
。或者,您可以删除then
和' catch`,并将这两个函数直接传递给$ http。
使用then和catch:
进行示例修复 $http({
url: '/send-referal',
method: "POST",
data: referal
}).then(function (response) {
console.log('success', response);
}).catch(function (response) { // optional
console.log('error', response);
});
<强>更新强>
正如其他答案所指出的那样,你的回答是悬而未决的。我建议你按照@Aruna的答案修复服务器端。