Как изменить курсор во время JQuery синхронного браузера, блокирующего POST? - PullRequest
2 голосов
/ 21 апреля 2010
   $.ajax({
       url: "/cgi-bin/stats.exe",
       method: "post",
       async: false,
       data: { refresh: "a41" }
   });

Использование ajax post синхронно - "async: false".

Хотя он блокирует браузер во время активного запроса, какой самый эффективный способ изменить курсор на песочные часы или отобразить ожидание .gif?

Возможно установить курсор при входе в эту функцию, а затем изменить его обратно в функция успеха или завершения ?

Любой совет приветствуется.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 21 апреля 2010

Я не проверял это, но я думаю, что это будет сделано так:

$('html, body').css('cursor', 'wait');

$.ajax({
   url: "/cgi-bin/stats.exe",
   method: "post",
   async: false,
   data: { refresh: "a41" },
   success: function() {
     $('html, body').css('cursor', 'auto');
     // the rest of your processing here
   },
   error: function() {
     $('html, body').css('cursor', 'auto');
   }
});

По предложению @ Патрика, также изменил его обратно на ошибку.

2 голосов
/ 21 апреля 2010

Не делайте запрос синхронным, потому что он полностью заблокирует все остальное. Вместо этого вы можете использовать асинхронный запрос, но сделать его синхронным, заблокировав пользовательский интерфейс. Для этого я использую jQuery.blockUI () .

1 голос
/ 21 апреля 2010

Я рекомендую использовать плагин jQuery blockUI . Он изменит курсор, покажет любое сообщение или значок (http://ajaxload.info/), который вам нравится, пока пользователь ждет. На сайте много информации о том, как его использовать, но в простейшей форме:

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);

Это автоматически покажет курсор ожидания и предотвратит действия пользователя до завершения вызова ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...