我正在尝试向多人发送电子邮件,一旦电子邮件成功发送,我就会通过ajax响应添加消息。下面的代码工作正常
腓
if(!empty($sendEmails)){
$sendCount = 0;
foreach($sendEmails as $mail){
$sent = $this->sendEmail('', $mail, $subject, $data);
if($sent != 'Message Sent'){
$response['send_error'][] = 'There is an error with ['.$mail.']';
}else{
$sendCount++;
}
}
}
$response['success'] = 'Email has been sent successfully to '. $sendCount. ' person(s).';
的Ajax
$.ajax({
type:'POST',
url:'post.php',
data:formData,
dataType:"json",
success:function(response){
$(".sndMail").remove();
if(response.success){
$(".sendResponse").prepend('<div class="alert alert-success sndMail"> <strong>Alert! </strong> '+response.success+'</div>');
}
if(response.send_error){
for(f=0; f<response.send_error.length; f++) {
//alert(response.fileErr[f]);
$(".sendResponse").prepend('<div class="alert alert-danger sndMail"> <strong>Alert! </strong> '+response.send_error[f]+'</div>');
}
}
if(response.error){
for(f=0; f<response.error.length; f++) {
//alert(response.fileErr[f]);
$(".sendResponse").prepend('<div class="alert alert-danger sndMail"> <strong>Alert! </strong> '+response.error[f]+'</div>');
}
}
}
});
但我想通过添加每个电子邮件发送响应来使用户查看更好。我想在处理时附加每个响应消息Response: Email is send to php_dev@gmai.com
,一旦发送完所有电子邮件,我将显示已经有效的成功消息。
所以有人可以指导我这是否可以使用ajax?如果有人指导我,我想感谢。我搜索了它,但我没有找到解决方案。
答案 0 :(得分:1)
单个ajax调用无法实现您想要的功能,但可以通过多次调用完成。
我们的想法是使用一个ajax调用来运行该进程,并使用第二个调用来定期轮询进度。
答案 1 :(得分:0)
是的,你可以。尝试这样的事情:
$response = array();
foreach($sendEmails as $mail){
if(mail()) // success
{
$response[$mail] = ''; // your message
}
else // fail
{
$response[$mail] = ''; // your message
}
}
echo json_encode($response);
AJAX:
success:function(response)
{
var data = JSON.parse(response);
// data contains the success or failure message for each email id.
// Show the status by wrapping the each email in <li> or <div> by using $.each loop
}