2011-07-19 27 views
2

以下のコードを使用すると、AJAXデータが読み込まれている間にダイアログが正しく表示されますが、アニメーション化されたGIFはアニメーション化されません。AJAXメソッドを呼び出すと、私のアニメーションGIFがアニメーション化されないのはなぜですか?

CSS:

.loading { 
    background: url('/images/loading.gif'); 
} 

はJavaScript:

$(function() { 
    $("#createButton").click(function(e){ 
     e.preventDefault(); 

     var $form = $(this).closest("form"); 

     $("#pleaseWait-dialog").dialog({ 
      modal: true, 
      height: 200, 
      resizable: false, 
      draggable: false 
     }); 

     $.ajax({ 
      type: "GET", 
      url: "myScript.cfm", 
      async: true, 
      success: function() { 
       $form.submit(); 
      } 
     }); 

     return false; 
    }); 
}); 

HTML:

<form action="post.cfm" method="post"> 
    <input 
     id="createButton" 
     type="submit" 
     name="createButton" 
     value="Create a New Thing" /> 
</form> 
<div id="pleaseWait-dialog" title="Gathering Data" style="display:none;"> 
    <span class="loading"></span> 
    <p>Thank you for your patience while we gather your data!</p> 
</div> 
+1

あなたのアニメーションGIFはどこですか?私はどこにGIFへの参照を見ることができません...あなたがスタイルを介して追加している場合は、背景画像としてのGIFがアニメーション化されるかどうかはわかりません... – Chris

+0

GIFはCSSです(私は、 )。参考までに、GIFは背景画像としてアニメ化されます。 –

答えて

0

は時にユーザーがクリックとAjaxリクエストが終了した後、それを隠してそれを表示してみてください。

$(function() { 
$("#createButton").click(function(e){ 
    $('#pleaseWait-dialog').show(); 
    e.preventDefault(); 

    var $form = $(this).closest("form"); 

    $("#pleaseWait-dialog").dialog({ 
     modal: true, 
     height: 200, 
     resizable: false, 
     draggable: false 
    }); 

    $.ajax({ 
     type: "GET", 
     url: "myScript.cfm", 
     async: true, 
     success: function() { 
      $form.submit(); 
     } 
    }); 

    return false; 
    }); 
}); 
2

この問題はIEでのみ発生しますか?アニメーションGIFの問題を引き起こすIEのページを参照してください。フォーム提出が完了すると、アニメーションGIFが乱れることがあります。このページでは、これについて深く説明します。

http://www.stillnetstudios.com/animated-in-progress-indicator-for-long-running-pages/

回避策は、フォームが呼び出された送信後の待機を表示することです。もちろん、あなたのAJAX呼び出しがあなたのユーザを処理するために長い時間がかかる場合、何が起こっているのか不思議に思うでしょう。

+0

情報をありがとう - 私は現在IEでテストしています。フォーム送信後にローダを表示すると、同じ結果になります。要点は、何かが実行されていることをユーザーに知らせてほしいからです。数秒かかるかもしれないので、気にしないでリフレッシュしてください。 –

0

アニメーションを再起動するには、イメージのsrc属性を現在の値に設定します。

See this answerタイムアウトを使用して数ミリ秒後にアニメーションを再開するコードの場合。

0

IEで動作させるには、gifを内側にしてiframeを挿入し、狂ったように聞こえますが動作します。

関連する問題