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

いいえ、ループが10万のような小さい数字の場合はフリーズしません。 – mergesort

+1

@angrymonkey技術的にはフリーズしています。 – Alnitak

答えて

3

それは単にAJAX 要求は、すぐにそれがスクリプトをダウンロードしたとして、非同期ではあるがために凍結ですと同時には大ループを実行し、がUIをブロックします。

+0

JavaScriptがクライアント側で実行されているので、サーバー上で実行されるため、PHPはフリーズしません。 – mergesort

+1

@angrymonkeyええ、かなり。 – Alnitak