2017-02-15 117 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();