我有一个网络服务来发送邮件,该邮件需要从和到字段作为请求正文的一部分。
以下代码我用来发送邮件到两个电子邮件ID。
var mailTo=["abcd@pqrs.com","lmno@pqrs.com"];
var options = {
url:'www.test.com/feedback',
from:'dummy@pqrs.com'
}
_.each(mailTo, function(value) {
console.log("Mail to value:",value);
options.body.to = value;
console.log("Mail to json:",options.body.to);
$http.post(options.url, options.body).success(function(data) {
if (data.status == 'success') {
console.log("Success");
} else {
console.log("Failure");
}
});
以上代码应将邮件发送到2个不同的邮件ID。但是这段代码将邮件发送到第二个mailID两次。记录器语句“Mail to value:”和“Mail to json:”记录正确的邮件ID。当我检查网络活动时, options.body.to 对于两个请求都是相同的。
这段代码出了什么问题?
答案 0 :(得分:3)
你应该确保:
$ http.post是异步的。
您将options
变量声明为全局变量。因此,当第二次执行post
请求时,options
值会更改
options.body.to = value;
您应该将options
变量声明为局部变量。
答案 1 :(得分:1)
您不应声明全局变量而应声明局部变量。
答案 2 :(得分:1)
你不应该声明全局变量而是声明局部变量 试试这个
<html>
<head>
<script src="jquery.min.js"></script>
<script>
var mailTo=["abcd@pqrs.com","lmno@pqrs.com"];
$.each(mailTo, function(value) {
alert(mailTo[value]);
});
</script>
</head>
</html>
答案 3 :(得分:0)
以下是使用jquery
进行此操作的方法<html>
<head>
<script src="jquery.min.js"></script>
<script>
var mailTo=["abcd@pqrs.com","lmno@pqrs.com"];
$.each(mailTo, function(value) {
alert(mailTo[value]);
});
</script>
</head>
</html>