2013-01-16 46 views
0

我有一個PHP接觸窗體,我正在使用jQuery的AJAX方法,但我得到了非常奇怪的結果與「成功:」函數。奇怪的jQuery AJAX成功函數行爲

這裏的PHP接觸形式:

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$number = $_POST['number']; 
$message = $_POST['message']; 
$msg = "Name: $name\n"; 
$msg .= "Email: $email\n"; 
$msg .= "Number: $number\n\n"; 
$msg .= "$message\n"; 
$recipient = "[recipients here]"; 
$subject = "Contact Us - $name"; 
$mailheaders = "From:$email"; 
$success = mail($recipient, $subject, $msg, $mailheaders); 

if ($success) { 
    echo ('Correct'); 
} else { 
    echo ('Failed'); 
} 
header("Location: [website address here]"); 
?> 

這裏是jQuery的AJAX方法:

$("#contact-form").submit(function (event) { 
    $.ajax({ 
     type: "POST", 
     url: '/lib/mailer.php', 
     data: { 
      name: $("#name").val(), 
      email: $("#email").val(), 
      number: $("#number").val(), 
      message: $("#message").val() 
     }, 
     success: function (data) { 
      //$("#contact-form")[0].reset(); 
      alert(data); 

      if(data === 'Correct') { 
       alert('Data is correct'); 
      } 
      else if (data !== 'Correct') { 
       alert('Data is not equal to correct'); 
      } 
      else { 
       alert('Else statement'); 
      } 
     } 
    }); 

    event.preventDefault(); 
    return false; 
}); 

現在,當我填寫表格,然後點擊提交時,PHP收到正確的數據,併成功發送電子郵件,回聲的「正確」。彈出一個提示「正確」。但是,接下來的警報不是「數據正確」,而是「數據不等於正確」。

我不知道這裏發生了什麼事情。我假設我一定在某個地方犯了一個非常愚蠢的錯誤,但似乎無法弄清楚。

+0

刪除頭 –

+0

檢查您的javascript函數中收到的數據的字符串長度。可能是空格出現在字符串的末尾。 –

+0

刪除標題部分,並像下面的答案代碼。 – Sahal

回答

1

這是不匹配這個詞。 使用

if($.trim(data) == 'Correct') 

希望它會有所幫助。 ( 「:這裏的網站地址]地址」);從mailer.php

+0

謝謝,這工作。出於某種原因,「正確」之後出現了一個導致此問題的空間。不知道爲什麼PHP響應添加尾隨空間,但... – Jordan

+0

不提及。大部分時間都是這樣。所以通常用json_encode發送響應,然後用javascript解析它。 –

1

您不能從ajax呼叫重定向。如果您使用的是header函數,它將以ajax成功打印多個頭數據。

頁眉數據是你所得到的Strange Result ...

刪除header("Location: [website address here]");

如果你想成功後重定向,像這樣做的ajax success

if (data == "Correct") { 
    window.location = '[website addresss here]'; 
} 
+0

謝謝,正在設置的標題位置應該已被刪除,但我現在已將其刪除。 – Jordan

0

刪除header("Location: [website address here]")

而且

$.ajax({ 
     type: "POST", 
     url: '/lib/mailer.php', 
     data: { 
      name: $("#name").val(), 
      email: $("#email").val(), 
      number: $("#number").val(), 
      message: $("#message").val() 
     }, 
     async:false, // <---- Add this fella here 
     success: function (data) { 
      //$("#contact-form")[0].reset(); 
      alert(data); 

      if(data === 'Correct') { 
       alert('Data is correct'); 
      } 
      else if (data != 'Correct') { 
       alert('Data is not equal to correct'); 
      } 
      else { 
       alert('Else statement'); 
      } 
     } 
    });