2017-02-15 124 views
3

我想用不同的收件人触发2个不同模板的邮件。我厌倦了在url:旁边添加另一个网址,但是它没有起作用。有没有办法添加更多的一个电子邮件到ajax请求?你的建议非常感谢。由于发送多个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"; 
+7

你不能做到这一点 – Satpal

回答

1

你不能这样做,监守一个AJAX请求只能跟一个网址,但你可以创建不同的URL的多个AJAX请求,他们将同时做好自己的工作 - 你就不需要在发射下一个之前等待一个完成。因此,在这种情况下,你有,你保留所有的urls.Then你需要的是$.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

两个参数的形式可以使用$.when()多个请求火后采取的array成功:

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 
}) 
-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"); 

可使用数组为存储URL和数据

+1

重定向将被称为立即在第一时间调用方法和第二甚至不会有机会被称为 – charlietfl

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();