jQuery blockUI и AJAX POST - PullRequest
       8

jQuery blockUI и AJAX POST

0 голосов
/ 17 февраля 2011

Я использую jQuery BlockUI в проекте.Для конкретного пользовательского действия я хочу заблокировать пользовательский интерфейс, а затем отправить данные POST на сервер.Когда происходит событие тайм-аута ИЛИ сервер возвращается, я хочу разблокировать страницу.

Я не могу реализовать это поведение.Это то, что у меня пока (не работает)

$(document).ready(function(){
    $('#test').click(function(event){
        $.blockUI({ message: $('#mydiv') });

        $.ajax({
              type: 'POST',
              url: 'www.example.com',
              data: somedata,
              dataType: "json"
        });

        setTimeout(function() {
                $.unblockUI({
                    onUnblock: function(){ 
                        alert('onUnblock');
                    }
                });
            }, 2000);
});

Может кто-нибудь заметить, что я могу делать неправильно?

Ответы [ 2 ]

4 голосов
/ 17 февраля 2011

Я думаю, для этого вам нужно установить собственные свойства ajax для успеха, ошибок и времени ожидания. Забудьте об использовании другого setTimeout.

вот документы.

http://api.jquery.com/jQuery.ajax/

больше похоже на:

 $.ajax({
              type: 'POST',
              url: 'www.example.com',
              data: somedata,
              dataType: "json",
              timeout: /*your time*/,
              success: function(result){ /*unblock*/ },
              error: function (xhr, ajaxOptions, thrownError){ /*unblock*/ }
        });
0 голосов
/ 17 февраля 2011

Использовать полный обратный вызов

    $.ajax({
          type: 'POST',
          url: 'www.example.com',
          data: somedata,
          dataType: "json",
          complete: function(){
            // unblock stuff here
          }
    });

Разница между успешным и полным завершением заключается в том, что выполняется вызов complete независимо от того, успешно ли выполнен вызов ajax Если вы используете только успех, то пользовательский интерфейс останется заблокированным в случае сбоя вызова AJAX.

...