如何关闭下拉列表,在onchange函数中调用?

时间:2020-06-05 07:28:36

标签: javascript php html jquery ajax

我使用选择框从下拉电子邮件列表中选择电子邮件,如果用户选择了电子邮件,则我调用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>

1 个答案:

答案 0 :(得分:1)

您应该删除async: false,这将使AJAX调用同步,并阻塞整个浏览器(Javascript是单线程的)。

无论如何,同步AJAX都是

a)完全不必要

b)已过时,正是因为它导致了这类问题-一些浏览器如果看到您正在使用它,就会在控制台中发出警告。

P.S。您还添加了两次type: "POST",这不会造成问题,但是很多余。

相关问题