我使用选择框从下拉电子邮件列表中选择电子邮件,如果用户选择电子邮件,我调用一个 javascript 函数来调用 ajax,此 ajax 函数返回所选电子邮件的 imap 函数返回值,一切都很好,但电子邮件下拉没有当用户选择电子邮件时关闭,只有在 ajax 响应完成后才会关闭,这是我的 HTML 下拉列表<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>在上面我调用了 get_mail_content_block(id); Javascript函数是function get_mail_content_block(val){ $('#mailbox_loader_img').show(); $.ajax({ type: "POST", url: baseurl+'Mailbox/email_content_block', async: false, type: "POST", data:{'email_id':val }, dataType: "html", success: function(response) { $('#mailbox_loader_img').hide(); $('#mail_content_append_block').empty().append(response); } });}
1 回答
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
您应该删除async: false,它使 AJAX 调用同步,并阻止整个浏览器(Javascript 是单线程的)。
在任何情况下同步 AJAX 是
a) 完全没有必要
和
b) 已弃用,恰恰是因为它会导致这类问题 - 如果某些浏览器看到您正在使用它,它们会在控制台中发出警告。
PS 你也添加了type: "POST"两次,这不会造成问题,但是是多余的。
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报
0/150
提交
取消