函数使用jquery.ajax()
方法从服务器获取数据并将其用作返回值。 如果我使用async = true该函数提前返回空值。 如果我使用async = false等待该功能太长。我在请求之前尝试了显示旋转时钟的切换div,但在请求结束之前div才会出现。如何在使用jQuery进行同步请求时阻止浏览器锁定(或显示等待符号)?
有关如何不锁定浏览器或显示等待图标/符号/文本的任何建议?
函数使用jquery.ajax()
方法从服务器获取数据并将其用作返回值。 如果我使用async = true该函数提前返回空值。 如果我使用async = false等待该功能太长。我在请求之前尝试了显示旋转时钟的切换div,但在请求结束之前div才会出现。如何在使用jQuery进行同步请求时阻止浏览器锁定(或显示等待符号)?
有关如何不锁定浏览器或显示等待图标/符号/文本的任何建议?
你不能。同步请求会锁定浏览器,包括您可能要做的任何动画或可能正在进行修改的动画 - 这就是为什么他们不鼓励。机会是,你试图从函数中返回一个值,从ajax请求发出,这对异步请求不起作用 - 修改你的逻辑来处理成功回调中的响应处理,并且所有的都会很好...
jquery处理来自PHP mysql查询的异步响应的任何好资源? – selytch 2010-08-02 07:08:16
@selytch:它不是特定于PHP或MySQL的;这就是异步调用必须处理的方式:在调用需要从回调触发后,你想要发生的一切。请参阅:http://stackoverflow.com/questions/2851952/jquery-ajax-function-to-call-php-script-which-returns-a-value或http://stackoverflow.com/questions/31129/how- can-i-return-a-variable-from-a-getjson-function或http://stackoverflow.com/questions/402503/ajax-return-data-not-working-in-jquery ... – Shog9 2010-08-02 15:51:50
对于未锁定浏览器,您应该使用异步请求,也许您的代码或ajax响应需要重构。
但是,如果你还没有想使用异步请求,你可以做这样的事情:
一个办法是把图像(载入中... GIF动画)。在发送ajax之前显示它。然后在成功时隐藏它。就像下面一样。
$.ajax({
url: 'ajax/test.html',
beforeSend : function(){
$('#LodingImg').show(); // show image..
},
success: function(data) {
$('#LodingImg').hide(); // hide image
$('.result').html(data);
alert('Load was performed.');
}
});
'async = true'请求有什么问题?你能告诉我们你的代码吗? – 2010-08-02 04:33:43
这是1000行代码:) Async true过早返回,并且后续函数获取空对象 – selytch 2010-08-02 07:09:39
[在(同步)Ajax期间停止浏览器锁定?](http://stackoverflow.com/questions/9755485/stop-浏览器锁定在同步ajax) – 2016-10-26 09:20:52