2011-07-05 77 views
0

我有一個表單,當我點擊提交時會觸發一個腳本。代碼jquery post問題

部分是:

 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>');   

的圖像消失,顯示的文字。

爲什麼?

非常感謝

注:發送電子郵件

+0

傳遞給'$ .post()'的回調函數只有在請求成功時纔會執行 - 是否mail.php返回200 OK? –

回答

1

的問題是,在所有的DOM元素已經綁定使用jQuery方法的新元素添加。動態元素加載後需要綁定。最快的解決辦法是增加在頁面上的HTML這樣的jQuery可以在創建頁面加載

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

謝謝guys.I厭倦了這兩個解決方案,它並沒有幫助。我仍然顯示加載圖像;併發送電子郵件。不知道如何使用FireBug ...但看起來沒有錯誤。另外,POST mail.php返回200 OK。但是'響應'選項卡中沒有任何內容...... – Olivier

+0

對於FireBug的Response選項卡中顯示的內容,您必須從mail.php發送一些文本。也許,在腳本末尾的「發送的消息」。另外,你可能想要在執行$(「#loadingImage」)之前添加一個警告來驗證代碼是否在回調中執行。fadeOut,ex:alert(「我點擊好後,圖像應該消失」); –

1

您的第一個淡出是IMG結束後,當元素綁定。你應該這樣做:

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()進入第一​​回調函數。

希望這會有所幫助。乾杯

+0

道歉的傢伙。有用。我正在嘗試使用谷歌瀏覽器,並且我確信緩存系統有問題......我已將兩種解決方法應用到一起。 1-我在頁面中添加了一個img標籤,並根據Edgar的建議更改了腳本(另外,不確定它有什麼影響)。非常感謝您對此的快速幫助。 – Olivier