我想为不同的收件人触发2封不同模板的电子邮件。我累了在url旁边添加了另一个url:但是它没有用。有没有办法将更多的电子邮件添加到ajax请求?非常感谢您的建议。感谢
$.ajax({
type: "POST",
url: "../wp-admin/emailer.php","../wp-admin/emailer2.php" // add more emailers
data: dataString,
success: function(){ return true;}
});
window.location.href = "thank-you";
答案 0 :(得分:1)
你不能这样做,因为一个AJAX请求只能与一个URL通信,但你可以为不同的URL创建多个AJAX请求,他们将同时完成他们的工作 - 你不需要在开火下一个之前等待一个完成。因此,在这种情况下,您必须使用array
保留所有网址。然后您需要的是$.each
和$.ajax
的两个参数形式
var urls = ['/url/one','/url/two', ....];
$.each(urls, function(i,u){
$.ajax(u,
{ type: "POST",
data: dataString;
success: function(){
return true;
}
}
);
});
window.location.href = "thank-you";
}
答案 1 :(得分:1)
在多个请求成功后可以使用$.when()
:
var req1 = $.post("../wp-admin/emailer.php", dataString);
var req2 = $.post("../wp-admin/emailer2.php", dataString);
$.when(req1,req2).then(function(){
// all requests succeeded
window.location.href = "thank-you";
}).fail(function(){
// oops, something went wrong with at least one of the requests
})
答案 2 :(得分:0)
如果您想处理每封电子邮件的回调,并且您的电子邮件少于100封,则可以使用递归 例如,只有在成功发送所有电子邮件后才显示谢谢
var urls=["url1","url2","url3","url4"];
var done=true;
function sendEmails(){
if(urls.length==0 && done){
alert("All emails sent successfully");
return true;
}else if(urls.length>0 && !done){
alert("There was an error");
return true;
}
else{
var url=urls.pop();
$.ajax({
type: "POST",
url: url,
data: dataString,
success: function(){
sendEmails()
},
error:function(){
done=false;
sendEmails();
}
});
}
}
sendEmails();
答案 3 :(得分:-1)
使用此方法调用多个URl withb数据.... 它还有助于您的代码中的任何位置的未来呼叫或动态呼叫
function sendMyAjax(URLAdd,dataString){
$.ajax({
type: "POST",
url: URLAdd
data: dataString,
success: function(){ return true;}
});
window.location.href = "thank-you";
}
};
sendMyAjax("../wp-admin/emailer.php","DataString");
sendMyAjax("../wp-admin/emailer.php","DataString");
您可以使用数组作为商店网址和数据