2010-12-17 17 views
1

AJAXリクエストの実行中に「読み込み中...」と言いたいDivがあります。その後、jQuery Chromeの機能の表示と非表示

$("#test").show(); 
$("#test").html("Loading..."); 

そして:私はこのようなので、イベントは私が最初に来るとき、APEと呼ばれるリアルタイムエンジンを使用すると、事業部を表示し、その後にHTMLを設定している「ロード...」ですChromeで、それが非表示()関数に到達し、それが消えるまで、だから、Firefoxでロードのdivが表示さ

jsonfields = Ext.decode('[' + $.ajax({ 
    url: "ajax.php?getsensors="+raw.deviceId, 
    success: function(data) { 

     $("#test").hide(); 

    }, 
    async: false 
}).responseText + ']');  

:私のAjaxの関数の中、私はこれを(私がグリッドにそれをロードするためのExtJSを使用しています)を行いますLoading ... divはまったく表示されず、コンソールにエラーはありません。その理由は何ですか?ありがとうございました!

<div id="test"></div> 

まだChromeで神秘的ではないのFirefoxで動作し、)また、私は

$("#test").html("Loading..."); 

を試してみましたが、その後、(空でテストを空にする試してみましたが、テストのIDを有する唯一のdiv要素があります。最初のAJAXリクエストが完了すると、divが正常に空になりますが、再読み込みで再生成されることはありません。

+0

"test"というIDを持つ複数の要素はありますか? – simshaun

+1

[JS Fiddle](http://jsfiddle.net/)、[JS Bin](http://jsbin.com/)、デモで問題を再現できますか? –

+0

猿がイベントをクロムに送信できない可能性はありますか?例えば輸送に失敗しましたか? –

答えて

1

このリンクを参照してくださいされてはjQueryのことですか?私はこのように設定Viajeros.comで同様のものを、持っているので:

$("#loading_indicator").bind("ajaxSend", function(e){ 
    $(this).show(); 
}).bind("ajaxComplete", function(){ 
    $(this).hide(); 
}).bind("ajaxError", function(){ 
    $(this).hide(); 
}); 

「ajaxSend」、「ajaxComplete」と「ajaxError」イベントはjQueryの内部AJAX呼び出しによってトリガーされます。 http://api.jquery.com/ajaxSend/

+0

ところで、私はなぜそれが隠されている場合、divのHTMLを設定する必要があるのか​​分かりません。それとも、時には別のコンテンツを持っていますか?また、Internet Explorerの空のdivに問題があり、htmlを " "に設定するか、消えてしまいました。 – Danita

+0

あなたのアドバイスをありがとう、私はいくつかの異なる方法を試してみましたが、クロムで作業していない、手作業でテキストを設定しようとしましたが、hide/show関数を使用し、htmlを設定してから空にして、 –

+0

.css( 'visibility'、 'visible')と.css( 'visibility'、 'hidden')を試しましたか? – Danita

0

ピート、

ユーザーもののこの種のためのローディングgif形式、

は、クリックしたdiv要素の隣にビジーインジケータを追加し、アヤックスが成功した後、それを を削除するか、それがクラスをthrought隠します。

この最もcommpon練習

http://jquery-howto.blogspot.com/2009/04/display-loading-gif-image-while-loading.html

+0

ajaxのロードは個別のReal-Timeイベントによってトリガーされるので、実際にはload divを変更できる「クリック」イベントはありません。 –

0

実際には速いか遅いというパラメタを渡さないと、表示と非表示に問題が発生することがありました。

ので:

$(this).show('slow); 

または

$(this).hide('fast'); 
+0

アドバイスをいただきありがとうございます。表示され、消えますが、リクエストが完了した後にのみ発生し、ポップアップして消滅します。イベント開始時に変更されません。 –

+0

ajax成功コールバックのhideに到達するまで表示されないようです。 show関数はrtイベントの最上位にあります.Ajaxリクエストが送信される前であれば、最初に起こるはずです。RTイベントはcallbにありますack自体、私はこれが問題を引き起こす可能性があるのだろうか? –

0

ただ、この問題全体に自分自身を来ります。私の解決策...

この問題をChromeで回避するには、AJAX呼び出しで1ミリ秒のタイムアウトを使用します。

など。

$("#mySpinningLoader").show(); 

var t = setTimeout(function() { 
    $.ajax({ 
     url: rootPath + controllerNAction, 
     async: false, 
     type: "POST", 
     data: JSON.stringify(lightweightObject), 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     success: function (data, textStatus, jqXHR) { 
      $("#mySpinningLoader").hide(); 
     } 
    }); 
}, 1); 
1

私は同じ問題がありました。ロードアニメーションはajaxの成功に隠されていませんでした。 jQueryのhide関数に1ミリ秒追加しました。

function test() { 
    $('#loading').show(); 
    $.ajax({ 
     type: "POST", 
     url: "functions.asp", 
     cache: false, 
     crossDomain: false, 
     dataType: "text", 
     data: { action: "getData" }, 
     success: function (data, textStatus) { 
      $('#loading').hide(1); // Added a millisecond 
      // Do some actions 
     }, 
     error: function (xhr, aOptions, rError) { 
      $('#loading').hide(); 
     } 
    }); 
} 
関連する問題