2011-07-05 19 views
0

私はフォームを持っています。私がsubmitをクリックすると、スクリプトが実行されます。コードのjquery投稿の問題

一部は次のとおりです。

 if(hasError == false) { 
     $(this).hide(); 
     $("#myForm").fadeOut("fast", function(){ 
      $("#myForm").before('<img src="../images/loading.gif" alt="Loading" id="loadingImage" />'); 
     }); 

     $.post("mail.php", 
      { emailFrom: emailFromVal, emailName: nameVal, emailMessage: messageVal }, 
       function(data){ 
        $("#loadingImage").fadeOut("fast", function() {     
         $("#loadingImage").before('<p>Your message has been sent. Cheers!</p>');            
        }); 
       } 
      ); 
    } 

フォームが送信されると、ロード画像が表示される...とまま!

ロード画像が表示され、コンソールに入力されている間、私は、Firebugのを使用する場合:

$("#loadingImage").fadeOut("fast", function() {     
         $("#loadingImage").before('<p>Your message has been sent. Cheers!</p>');   

画像が消えて、テキストが表示されます。

なぜですか?

どうもありがとう

注:電子メールが問題は、すべてのDOM要素をjQueryのメソッドにバインドされた後、あなたの新しい要素が追加されていることである

+0

'$ .post()'に渡されるコールバックは、リクエストが成功した場合にのみ実行されます。mail.phpは200 OKを返しますか? –

答えて

1

送信されます。動的要素は、一度ロードされるとバインドする必要があります。最も早い解決策は、あなたの最初のフェードアウトは、IMGの後に終了さ

<img src="../images/loading.gif" alt="Loading" id="loadingImage" style="display:none" /> 
+0

ありがとうございました。私は両方の解決策に疲れていて、助けにはなりませんでした。私はまだ画像を表示しています。メールが送信されます。 FireBugの使い方はわかりませんが、エラーはないようです。また、POST mail.phpは200 OKを返します。しかし、「応答」タブの何も... – Olivier

+0

FireBugの「応答」タブに何かが表示される場合は、mail.phpからテキストを送信する必要があります。おそらく、スクリプトの最後に「Messages Sent」と表示されます。また、$( "#loadingImage")を実行する前にアラートを追加することで、コールバック内でコードが実行されていることを確認することもできます。 –

1

ページのロードが作成されるときにjQueryの要素をバインドすることができますので、ページ上のHTMLを追加することです。あなたが行う必要があります。

if(hasError == false) { 
     $(this).hide(); 
     $("#myForm").fadeOut("fast", function(){ 
      $("#myForm").before('<img src="../images/loading.gif" alt="Loading" id="loadingImage" />'); 
      $.post("mail.php", { emailFrom: emailFromVal, emailName: nameVal, emailMessage: messageVal }, 
       function(data){ 
        $("#loadingImage").fadeOut("fast", function() {     
         $("#loadingImage").before('<p>Your message has been sent. Cheers!</p>');            
        }); 
       } 
      );   
     }); 
} 

をあなたが見ることができるように、我々は最初の​​コールバック関数へ$.post()呼び出しを移動しました。

これが役に立ちます。 Cheers

+0

お詫び申し上げます。できます。私はGoogle Chromeで試していましたが、キャッシングシステムに問題があると確信しています...私はあなたの回避策を両方とも適用しました。 1-私のページ内にimgタグを追加しました。私はEdgarのアドバイスに従ってスクリプトを変更しました(また、影響がないかどうかはわかりません)。これについてのあなたの迅速な助けをたくさんありがとう。 – Olivier