2013-02-15 62 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