如何从表单中捕获参数而不序列化

时间:2015-10-11 18:01:34

标签: php jquery ajax forms post

感谢您的时间和知识!

所以这是我的问题,我试图用AJAX发布多个字符串,而不是仅在一个数据集中序列化它们。我想这样做是因为我在服务器端的php会对它们做出个别的反应。

这是服务器端:



<?php
$subjectPrefix = '[Contact via le Site]';
$emailTo = 'kokolesinge@gmail.com';
if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $name    = stripslashes(trim($_POST['form-name']));
    $email   = stripslashes(trim($_POST['form-email']));
    $subject = stripslashes(trim($_POST['form-subject']));
    $message = stripslashes(trim($_POST['form-message']));
    $pattern  = '/[\r\n]|Content-Type:|Bcc:|Cc:/i';
    if (preg_match($pattern, $name) || preg_match($pattern, $email) || preg_match($pattern, $subject)) {
        die("Header injection detected");
    }
    $emailIsValid = preg_match('/^[^0-9][A-z0-9._%+-]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/', $email);
    if($name && $email && $emailIsValid && $subject && $message){
        $subject = "$subjectPrefix $subject";
        $body = "Nom: $name <br /> Email: $email <br /> Message: $message";
        $headers  = 'MIME-Version: 1.1' . PHP_EOL;
        $headers .= 'Content-type: text/html; charset=utf-8' . PHP_EOL;
        $headers .= "From: $name <$email>" . PHP_EOL;
        $headers .= "Return-Path: $emailTo" . PHP_EOL;
        $headers .= "Reply-To: $email" . PHP_EOL;
        $headers .= "X-Mailer: PHP/". phpversion() . PHP_EOL;
        mail($emailTo, $subject, $body, $headers);
        $emailSent = true;
    } else {
        $hasError = true;
    }
}
?>
&#13;
&#13;
&#13;

因此,您看到我要查看的4个变量是表单名称,表单电子邮件,表单主题,表单邮件。这些字符串来自以下形式:

&#13;
&#13;
<div id="contact" class="contact">
  <div class="container">
<?php if(!empty($emailSent)): ?>
    <div class="col-md-6 col-md-offset-3">
      <div class="alert alert-success text-center">Votre message a ete envoye avec succes.</div>
    </div>
<?php else: ?>
<?php if(!empty($hasError)): ?>
    <div class="col-md-5 col-md-offset-4">
      <div class="alert alert-danger text-center">Un erreur s'est produite, essayer a nouveau.</div>
    </div>
<?php endif; ?>
    <div class="col-md-6 col-md-offset-3">
      <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" id="contact-form" class="form-horizontal" role="form" method="post">
        <input type="text"  name="form-name" placeholder="Nom" />
        <input type="email"  name="form-email" placeholder="Email" />
        <input type="text" name="form-subject" placeholder="Objet" />
        <div class="clearfix"></div>
        <textarea  rows="3"  name="form-message" placeholder="Message" /></textarea>
        <div class="sub">
          <button id="envoyer" type="button" class="btn btn-default">Envoyer</button>
        </div>
      </form>
    </div>
<?php endif; ?>
  </div>
</div>
&#13;
&#13;
&#13;

所以我的问题是我想从我的表单中捕获那些4变量,使用AJAX发布它们然后接收它们。现在我只是想在一个警告框中显示这个参数,但它不起作用,我只能用这个JQuery脚本显示它们序列化:

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
$(function(){
  $("#envoyer").click(function(){
    alert($('#contact-form').serialize());
/*
    $.ajax({
      type: "POST",
      url: 'index.php',
      data: {form-name : form-name, form-email : form-email, form-subject : form-subject, form-message : form-message}
      success: function(data)
      {
        alert("success!");
      }
    });
*/
  });
});
</script>
&#13;
&#13;
&#13;

所以这个最后一个片段是我需要帮助的片段,我希望能够从我的表单中捕获这些参数,现在只需将它们显示在一个警告框中(我可以用AJAX发布它们,displayig他们是确保它运作良好的第一步。

再次感谢您的时间,我希望我已经清楚了解我的问题,谢谢! :)

0 个答案:

没有答案