我尝试使用Ajax发布请求中的数据更新HTML进度条。根据电子邮件成功,从foreach循环中的PHP变量集中提取编号值。我正在努力寻找一种方法,使用jQuery和Ajax将值从PHP发送到html进度条。
我有一个标准的ajax请求,工作正常,这是我的PHP代码foreach循环:
foreach ($result as $person) {
$to = $person->post_title;
$headers = "From: " . bloginfo( 'name' ) ." <". get_option( 'admin_email' ) .">\r\n";
$headers .= "Reply-To: ". get_option( 'admin_email' ) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/plain; charset=\"utf-8\"\r\n";
$message = $content;
$send_email = wp_mail( $to, $subject, $message, $headers );
if( $send_email ) {
$email_count_update++;
}
// All emails have been sent
if( $email_count_update == $email_count ) {
$response->add( array(
'data' => 'success',
'supplemental' => array(
'message' => __( 'Emails sent', 'mup' )
)
));
$response->send();
}
}
任何帮助都会很棒,因为我整夜都在忙!
答案 0 :(得分:0)
您可以尝试将其放在$ _SESSION变量中,并使用js中的setInterval打印会话值,最后销毁会话变量
答案 1 :(得分:-1)
在电子邮件发送功能中添加设置$ _SESSION值,该值将保存当前$ email_count_update值。为避免用户调用多个请求时发生冲突,请将AJAX中的JS发送给PHP的唯一值。设为$ _GET ['request_unique']。
在您的代码中添加:
if( $send_email ) {
$email_count_update++;
$SESSION['email_counter' . $_GET['request_unique']] = $email_count_update;
}
在PHP中创建单独的操作(让它响应url /counter
),使用$ _GET ['request_unique']调用将返回此值:
$response->add(
array('email_count_update' => $SESSION['email_counter' . $_GET['request_unique']])
)->send();
在Javascript中,在发送动作请求后,每秒检查一次这个PHP会话值:
setInterval(function(){
//make AJAX request to /counter?request_unique=XXX
//get email_count_update from response and update progressbar
}, 1000);