2012-07-10 109 views
0

我已經通過PHP提交了我的表單,但我正在爲AJAX掙扎。提交後,錯誤總是出現,好像res被設置爲false而不是true。我嘗試了代碼周圍,並尋找我自己的答案,因爲我想學習,但我沒有找到我所需要的。AJAX聯繫表 - 成功和失敗信息

請允許我指出我正確的方向,我做了什麼不當嗎?

非常感謝你!

供您參考代碼:

$('#contact_form').submit(function() { 

    var this_form = $(this); 
    $.ajax({ 
     type: 'post', 
     data: this_form.serialize(), 
     url: 'scripts/send_email.php', 
     success: function(res) { 
      if(res == "true") { 
       $(this_form)[0].reset(); 
       $(".notice").removeClass("error").text("Thank you for contacting us!").addClass("success").fadeIn("fast"); 
      } else { 
       $(".notice").text("Please check all fields and try again.").addClass("error").fadeIn("fast"); 
      } 
     } 
    }); 

}); 

回答

0

嘗試問:

if(res == true) 

代替。同時,爲了避免這種問題的好方法是通過螢火蟲或鉻調試器來調試您的JavaScript,如果你使用的是Chrome,可以將這個行添加到您的代碼:

debugger; 
if(res == "true") 

和JavaScript將停止有這麼你可以檢查變量,看看發生了什麼。你可以打開它的選項 - >工具 - >開發人員工具 - >腳本「。

希望這有助於:)

+0

非常感謝! – 2012-07-10 19:09:45

+0

沒問題,歡迎來到:) – Hassek 2012-07-10 19:11:07

0

看來,貴的道理比較是由於res代表的值返回false。您正在檢查以確保它是一個值爲「true」的字符串。如果不是,則觸發其他代碼。

您的success屬性只有在AJAX傳輸成功時纔會執行。您需要將比較檢查設置爲send_email.php的所需輸出,即「成功!」。或'失敗!'以表明正確的處理。

成功(數據,textStatus,jqXHR)

函數。如果請求成功被調用。該函數獲得三個參數: 參數:從服務器返回的數據,根據 格式化dataType參數;描述狀態的字符串;和jqXHR (在jQuery 1.4.x,XMLHttpRequest中)對象。從jQuery 1.5開始, 成功設置可以接受一組函數。每個函數將依次調用 。

有關在jQuery中處理AJAX請求的其他信息,請參閱docs

success: function(res) { 
    if (res == "Success!") { 
     $(this_form)[0].reset(); 
     $(".notice").removeClass("error").text("Thank you for contacting us!").addClass("success").fadeIn("fast"); 
    } else { 
     $(".notice").text("Please check all fields and try again.").addClass("error").fadeIn("fast"); 
    } 
} 
+0

非常感謝您! – 2012-07-10 19:09:53

+0

不客氣。讓我知道你是否需要額外的協助/解釋這個問題。 – RobB 2012-07-10 19:15:21

0

在你send_email.php文件,回聲 「成功」,如果它成功。

然後修改您的AJAX調用就像這樣:

success: function(data) { 
if (data == "success") {do stuff} else {do failure stuff} 
}