2012-04-02 50 views
3

当我使用jQuery的$ .post ajax函数,页面冻结2-3秒,然后收到数据。冻结时间可能会随收到的数据而变化。当ajax发布后,页面冻结几秒钟

我该如何预防?

编辑:

代码我使用的,当你发送Ajax请求确保异步设置为true,它实际上收到非常大的数据

$.post("../ajax_updates.php", { time: last_update }, function(data) { 
    if (data) { 
    if (data != "") { 
    $("#news_feed").prepend($(data).fadeIn('slow')); 
    } 
    } 
    }); 
+0

你能供应所涉JavaScript代码?听起来你正在做一些回调,暂停页面上的所有其他活动... – 2012-04-02 22:11:05

+0

我敢打赌,你关掉'async' – zerkms 2012-04-02 22:11:44

+0

@zerkms async默认设置,我没有碰它 – 2012-04-02 22:14:44

回答

10

如果你通过JavaScript加载的数据量很大,这是正常的,因为你的要求是synchronous这将使您的浏览器需要等待该请求结束之前做别的问题引起的。 您需要提出您的要求asynchronous

P.S.使用$ .get而不是$ .post来从服务器获取信息,在某些情况下 - 特别是如果您在Windows IIS下编码工作,您将得到一个有关该错误的错误。

P.S-1。有意义的$ .get用于从服务器获取数据,$ .post用于发送数据。

试试这个:

$.ajaxSetup({ 
    async: true 
}); 

$.get("../ajax_updates.php", { time: last_update }, function(data) { 
    if (data && data != "") { 
    $("#news_feed").prepend($(data).fadeIn('slow')); 
    } 
}); 
+0

当我使用$ .get时,如何处理php上的其他数据? – 2012-04-02 22:20:15

+0

如果你不喜欢修改你的脚本,可以使用$ .post,如果你将$ .post更改为$ .get,那么你需要改变你的脚本的一小部分,因为我认为他会等待$ _POST [ 'last_update']但你把它传递给$ _GET php数组。 – h4cky 2012-04-02 22:23:20

+0

是的,我改变它$ _GET – 2012-04-02 22:24:44