2011-11-24 83 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