如何在jQuery同步浏览器阻止POST期间更改游标?

时间:2010-04-21 18:57:26

标签: javascript jquery html css

   $.ajax({
       url: "/cgi-bin/stats.exe",
       method: "post",
       async: false,
       data: { refresh: "a41" }
   });

同步使用ajax post - “async:false”。

虽然它在活动请求期间阻止浏览器,但是将光标更改为沙漏或显示等待.gif的最有效方法是什么?

也许在进入此功能时设置光标然后在success or complete function中将其更改回来?

感谢任何建议。

谢谢。

3 个答案:

答案 0 :(得分:3)

我没有对此进行测试,但我认为会这样做:

$('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');
   }
});

Per @ patrick的建议,也将其更改为错误。

答案 1 :(得分:2)

不要让请求同步,因为它会完全阻止其他所有内容。相反,您可以使用异步请求,但通过“阻止”UI使其看起来像是同步的。我为此使用了jQuery.blockUI()

答案 2 :(得分:1)

我建议使用jQuery blockUI plug-in。它将更改光标,在用户等待时显示您喜欢的任何消息或图标(http://ajaxload.info/)。网站上有很多关于如何使用它的信息,但最简单的形式是:

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

这将自动显示等待光标并阻止用户活动,直到ajax调用完成。