使用jquery验证发布表单

时间:2013-11-17 14:37:04

标签: php jquery html forms post

我正在拼命尝试使用POST方法和jquery validate plugin发送表单。

我有一个简单的php文件,它应该发送一封包含数据格式的电子邮件。

作为Mac用户,我正在使用MAMP来测试php服务器部分。

当我点击表单的提交按钮并且状态正常时,我查看了Web控制台:

[15:32:50,638] POST http://localhost:8888/contact.php [HTTP/1.1 200 OK 36ms]

但没有任何反应。它看起来我的contact.php文件永远不会到达!

我尝试将文件上传到服务器,结果相同:没有。

这是我的表单,在html中:

<form class="cmxform" id="commentForm" method="" action="">
<fieldset class="myfield">
<legend>For all information, please contact us with the following form :</legend>
<p>
<label class="mylabel" for="iname"><span style="color:red;">* </span>Nom</label>
<input class="myinput" id="iname" name="iname" minlength="2" maxlength="50" type="text" required/>
</p>
<p>
<label class="mylabel" for="imail"><span style="color:red;">* </span>Email</label>
<input class="myinput" id="imail" name="imail" minlength="3" maxlength="100" type="email" required email/>
</p>
<p>
<label class="mylabel" for="isubject"><span style="color:red;">* </span>Sujet</label>
<input class="myinput" id="isubject" name="isubject" minlength="3" maxlength="130" type="text" required/>
</p>
<label class="mylabel" for="imessage" style="vertical-align: top;"><span style="color:red;">* </span> Message</label>
<textarea class="mytextarea" id="imessage" name="imessage" minlength="3" maxlength="2000" type="text" required></textarea>
</p>
<p>
<input class="submit" type="submit" value="Send"/>
</p>
</fieldset>
</form>

对于jquery部分,我正在使用post方法:

$('#commentForm').validate({

 errorClass : "myerror",
 errorElement : 'em',
 submitHandler: function() {       
       $.post( 'contact.php', { name : 'john' } ); //just for testing, i would normally pass the form data
        }
  });

和php部分,这是一个简单的电子邮件转发:

<?php

header('Content-type: text/html; charset=utf-8');

$message = <<<TEXT
name: {$_POST['name']}
email: {$_POST['email']}
subject: {$_POST['subject']}
message: {$_POST['message']}    
TEXT;

$header ='From: contact@xxxxxx.com'."\n";
$header .='Reply-To: '.$_POST['name']."\n";
$header .='Content-Type: text/plain; charset="iso-8859-1"'."\n"; 
$header .='Content-Transfer-Encoding: 8bit';

$to = 'yyyyyy@contact.com';

$subject = $_POST['subject'];

if( ! mail($to, $subject, $message, $header) ) 
{ 
   die('Error sending email.');
}else {
  die(    'Email sent!'.$to .
        'sub:' .$subject .
        'message:' .$message .
        'header:' .$header);
}

我做错了什么?作为html开发的新手,我很困惑。我已经浏览了SO以找到类似的问题,并尝试复制/粘贴示例,但我仍然遇到了问题。

感谢您的帮助..

1 个答案:

答案 0 :(得分:0)

html文件中的输入名称与php文件不同

 <input class="myinput" id="iname" name="iname" minlength="2" maxlength="50" type="text" required/>

此处的名称为"iname"

在php文件中

name: {$_POST['name']}

名称为name

更正此问题并查看结果