2012-04-02 2 views
3

jqueryの$。ポストajax関数を使用すると、ページが2-3秒間フリーズしてからデータが受信されます。凍結時間は、受け取ったデータによって変わる可能性があります。ajaxのポスト作業時にページがフリーズする

どうすればこの問題を防ぐことができますか?

EDIT:あなたはAJAXリクエストを送信すると、私は、それは実際には非常に大きなデータを受信

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

は、あなたが質問にJavaScriptコードを供給することはできますか?あなたがページ上の他のすべてのアクティビティを中断しているコールバックで何かをしているように聞こえます... –

+0

'async'をオフにしました – zerkms

+0

@zerkms asyncはデフォルト設定になっています。私はそれに触れていません –

答えて

10

これはあなたの要求は、ブラウザの前に終わる何かを行うには、この要求を待つようになりますsynchronousであるため、問題が発生し、正常です。 ご要望が必要ですasynchronous

P.S.場合によっては、$ .postの代わりに$ .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で処理できますか? –

+0

スクリプトを修正したくない場合は、$ .postを$ .postに変更すると$ .postを使用しても問題ありません。少しスクリプトを変更する必要があります。私は$ _POST [ 'last_update']しかし、$ _GET php配列に渡します。 – h4cky

+0

ええ、私はそれを$ _GETに変更しました –

2

を使用しています

コードは、非同期がtrueに設定されていることを確認します。 falseに設定すると、ブラウザは応答が受信されるまでフリーズします。あなたはJavaScriptを介してデータの大きな量をロードする場合

http://api.jquery.com/jQuery.ajax/

+1

$ .postには非同期オプションがありません。デフォルトではtrueに設定されています – diegoe

関連する問題