我使用选择框从下拉电子邮件列表中选择电子邮件,如果用户选择了电子邮件,则我调用javascript函数来调用ajax,此ajax函数返回所选电子邮件的imap函数返回值,一切正常,但是电子邮件下拉列表当用户选择电子邮件时,ajax响应仅在关闭后才完成,
这是我的HTML下拉列表
#include <iostream>
int main() {
long i=0;
while (1) {
float x = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
float y = static_cast <float> (rand()) / static_cast <float> (RAND_MAX);
float f = x / y;
double d = (double)x / (double)y;
if(++i % 10000000 == 0) { std::cout << i << "\t" << x << "," << y << std::endl; }
if ((float(d) != f)) {
std::cout << std::endl;
std::cout << x << "," << y << std::endl;
std::cout << std::hex << *(int*)&x << "," << std::hex << *(int*)&y << std::endl;
std::cout << float(d) - f << std::endl;
return 1;
}
}
}
以上我称为get_mail_content_block(id); JavaScript函数是
<div class="row">
<div class="col-md-12">
<div class="form-group m-form__group">
<select name="info_email" id="info_email" class="form-control m-bootstrap-select m_selectpicker" data-live-search="true" onchange="get_mail_content_block(this.value);">
<option value="">Choose Email</option>
<?php
$admindata = $this->session->userdata('admindata');
if ($admindata['email_id'] != '') {
$users_email_info = get_users_mail_details_if_exist($admindata['email_id']);
if(count($users_email_info) > 0){
echo "<option value=".$users_email_info->email_detail_id.">".$users_email_info->email_ID."</option>";
}
}
?>
<?php
if(!empty($email_lists))
{
foreach ($email_lists as $key => $email_list) { ?>
<option value="<?php echo $email_list->email_detail_id; ?>" <?php if($default_email == $email_list->email_detail_id){ echo 'selected'; }else{ echo ''; } ?>><?php echo $email_list->email_ID; ?></option>
<?php }
}
?>
</select>
</div>
</div>
</div>
答案 0 :(得分:1)
您应该删除async: false
,这将使AJAX调用同步,并阻塞整个浏览器(Javascript是单线程的)。
无论如何,同步AJAX都是
a)完全不必要
和
b)已过时,正是因为它导致了这类问题-一些浏览器如果看到您正在使用它,就会在控制台中发出警告。
P.S。您还添加了两次type: "POST"
,这不会造成问题,但是很多余。