2011-11-24 91 views
1

我想了解如何在发送请求到js文件时使用ajax请求。不幸的是,JavaScript冻结了浏览器。我知道它的冻结,因为我有一个gif微调,在请求处理时停止。 PHP不冻结它。下面是代码:为什么我的jQuery Ajax请求会冻结UI?

的index.html

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
    <script type='text/javascript'>  
     $(document).ready(function() { 
      $("#b").click(function() { 
       $.ajax({ 
        url: 'ajax.js', 
        dataType: "script", 
        type: "GET" } 
       ); 

       });   
    }); 

    </script> 
<img src="spinner.gif"> 
<div id="upload"> 
    <button id="b">test</button> 
</div> 
<textarea type="text" id="text"></textarea> 
<div id='input'></div> 

ajax.js

var x = 5; 
for(var i = 0; i< 300000000; i++){ 
    x += 1; 
} 

$("#input").html(x); 
+0

如果回路少于3亿,它是否仍然冻结?尝试我<10 –

+0

不,不会冻结,如果循环是一个像1000万较小的数字 – mergesort

+1

@angrymonkey从技术上说,它冻结它,只是不够长,你要注意。 – Alnitak

回答

3

冷极了,只是因为虽然AJAX 要求是异步的,只要它已下载脚本它同步启动执行那个大规模循环,并且将会阻塞UI。

+0

所以是PHP的一个不冻结,因为它是在服务器上执行,而JavaScript版本在客户端执行? – mergesort

+1

@angrymonkey是的,非常。 – Alnitak

相关问题