2016-12-20 3 views
1

У меня есть веб-сервис для отправки почты, которая требует от и до полей в составе тела запроса.HTTP POST звонок не выбирает последнее значение, переданное на тело

Ниже кода, который я использую, чтобы отправить письмо на два идентификатора электронной почты.

var mailTo=["[email protected]","[email protected]"]; 
var options = { 
       url:'www.test.com/feedback', 
       from:'[email protected]' 
       } 
_.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"); 
    } 
}); 

Выше кода следует отправлять почту на два разных почтовых идентификатора. Но этот код дважды отправляет почту на второй mailID. Операторы Logger «Mail to value:» и «Mail to json:» регистрируют правильные идентификаторы почты. Когда я проверяю сетевую активность, options.body.to такой же для обоих запросов.

Что-то не так в этом коде?

ответ

3

Вы должны убедиться, что:

$ http.post является асинхронным.

Вы объявляете переменную options глобальной. Так что, когда post запрос выполняется второй раз, значение options изменяется options.body.to = value;

Вы должны объявить options переменную в качестве локальной переменной.

0

Вот как я мог бы получить эту работу с помощью JQuery

<html> 
<head> 
<script src="jquery.min.js"></script> 
<script> 
var mailTo=["[email protected]","[email protected]"]; 
$.each(mailTo, function(value) { 
    alert(mailTo[value]); 
}); 
</script> 
</head> 
</html> 
1

Вы не должны объявить глобальную переменную, но локальную переменную.

1

Вы не должны объявлять глобальную переменную, кроме локальной переменной.
Пробовать

<html> 
    <head> 
    <script src="jquery.min.js"></script> 
    <script> 
    var mailTo=["[email protected]","[email protected]"]; 
    $.each(mailTo, function(value) { 
     alert(mailTo[value]); 
    }); 
    </script> 
    </head> 
    </html>