2013-02-15 65 views
0

我想弄清楚爲什麼這個表單總是返回「錯誤」,當JavaScript被激活,但它的作品就像應該停用JavaScript時。
它與echo "success"echo "error"有關,但我真的不知道什麼是錯的。我試圖迴應12,truefalse - 它從來沒有工作。爲什麼?Ajax形式:錯誤的價值發回

我的jQuery代碼:

$("form").submit(function() { 

     var name  = $("input[name=name]"), 
      mail  = $("input[name=email]"), 
      message = $("textarea[name=message]"); 

     var data = "name=" + name.val() + "&mail=" + mail.val() + "&message=" + encodeURIComponent(message.val()); 

     $.ajax({ 
      url: "my_form.php", 
      type: "POST", 
      data: data, 
       success: function (data) { 
        if (data == "success") { 
         alert("Everyhting is good."); 
        } else { 
         alert("Error"); 
        } 
       } 
     }); 

     return false; 
}) 

而且PHP的一部分:

$name = $_POST["name"]; 
$email = $_POST["email"]; 
$message = $_POST["message"]; 

function checkEmail($e) { 

    $isValid = true; 

    if (strlen($e) === 0) { 
     $isValid = false; 
    } 

    if (!preg_match("/^((?:(?:(?:\w[\.\-\+]?)*)\w)+)\@((?:(?:(?:\w[\.\-\+]?){0,62})\w)+)\.(\w{2,6})$/", $e)) { 
     $isValid = false; 
    } 

    if ($isValid == true) { 
     echo "success"; 
    } else { 
     echo "error"; 
    } 
} 

checkEmail($email); 
+0

也許它不喜歡你使用變量'data'兩次?一次爲了名字,值一對,一次爲成功。嘗試改變第一個數據變量被調用toSend或其他東西。 – 2013-02-15 16:49:21

回答

2

您呼叫電子郵件mail的數據串並在PHP期待$_POST['email']

var data = "name=" + name.val() + "&mail=" + mail.val() + "&message=" + encodeURIComponent(message.val()); 

變化mail在線以上至電子郵件等的下方。

var data = "name=" + name.val() + "&email=" + mail.val() + "&message=" + encodeURIComponent(message.val()); 
+0

非常感謝!我只是沒有看到這個,雖然我檢查了大約100次;-) – Sven 2013-02-15 16:53:18