как закрыть модальное всплывающее окно, не дожидаясь ответа ajax

#javascript #php #ajax #codeigniter

#javascript #php #ajax #codeigniter

Вопрос:

Я отправляю некоторые вложения с электронной почтой через ajax. Но отправка и закрытие модального сообщения электронной почты занимает слишком много времени. Итак, я хочу знать, есть ли какой-нибудь способ, чтобы мое модальное всплывающее окно закрывалось, как только я нажимаю кнопку отправки электронной почты, и ajax будет работать в фоновом режиме без каких-либо перерывов

 $.ajax({
           type:"POST",
           url:url,
           data:data,
           mimeType: "multipart/form-data",
           contentType: false,
           cache: false,
           processData: false
           success: function(data, xhr, status) {
               $("#demo").modal('hide');
              window.location="abc.html";
           }           
       })
 

Пожалуйста, помогите мне с этим.
Заранее благодарю вас.

Комментарии:

1. $("#demo").modal('hide') поместите это в начало функции ajax

2. Судханшу, что делать, если запрос ajax завершается неудачно? значит, вы не хотите оставить модальное окно открытым?

Ответ №1:

Вы можете скрыть модальное окно перед отправкой AJAX запроса. .ajax() имеет beforeSend обработчик для выполнения операции перед выполнением запроса AJAX.

Код будет выглядеть примерно так,

 $.ajax({
           type:"POST",
           url:url,
           data:data,
           mimeType: "multipart/form-data",
           contentType: false,
           cache: false,
           processData: false,
           beforeSend: function () {
                 $("#demo").modal('hide');
            },
           success: function(data, xhr, status) {
                 window.location="abc.html";
           }           
       });
 

Комментарии:

1. Алок Патель: я попробовал метод ur bt, он только скрывает модальное bt, не перезагружая страницу. Страница перезагружается только тогда, когда ajax получает «успех». Пожалуйста, дайте несколько других предложений.

2. Переместить страницу, перезагрузить код beforeSend тоже. Отредактировал ответ.

3. Не приведет ли перезагрузка страницы к прерыванию запроса AJAX?

4. @Cerbrus Вы правы, в критическом случае запрос AJAX будет прерван. Поэтому этого следует избегать.

5. Итак, дайте любое решение, чтобы я мог отправить электронное письмо с вложениями и делать другие вещи, не дожидаясь ответа.

Ответ №2:

модальное окно, имеющее параметр closable, вы можете использовать его.

и когда вы нажимаете на кнопку отправки, используйте return false;

это закроет ваше модальное окно. Я надеюсь, что это поможет вам

                 $.ajax({
                url:'',
                cache:'false',
                success:function(html){
                BootstrapDialog.show({
                title: 'Add',
                message: html,
                closable: false,
                onshown: function(dialogRef){
                alphanumeric('');},});}});return false;