伙计们,谢谢您抽出宝贵的时间看。我正在使用jQuery创建一个非常基本的AJAX联系表单。电子邮件发送了,但是打开电子邮件后没有POST数据,因此我只得到了在PHP脚本中定义的字符串。在我手机的电子邮件客户端上,电子邮件内容的字面意思是“未定义”。我尝试添加不同类型的标头数据无济于事,并且在PHP mail()函数上添加了许多变体。
我非常愿意为简单的AJAX表单采用更简单的解决方案,因此在此先感谢您提供任何新方法。
形式如下:
<section id="left"> <label for="form_name">Name</label> <input name="form_name" id="form_name" type="text" > <label for="form_email">Email</label> <input name="form_email" id="form_email" type="email" > </section> <section id="right"> <label for="form_msg">Message</label> <textarea name="form_msg" id="form_msg"></textarea> <input id="submit" class="button" name="submit" type="submit" value="Send"> </section> </form>
jQuery AJAX:
$(function() { $("#contact .button").click(function() { var name = $("#form_name").val(); var email = $("#form_email").val(); var text = $("#msg_text").val(); var dataString = 'name='+ name + '&email=' + email + '&text=' + text; $.ajax({ type: "POST", url: "email.php", data: dataString, success: function(){ $('.success').fadeIn(1000); } }); return false; }); });
PHP脚本(外部文件“ email.php”):
<?php if($_POST){ $name = $_POST['form_name']; $email = $_POST['form_email']; $message = $_POST['form_msg']; //send email mail("email@gmail.com", "This is an email from:" .$email, $message); } ?>
无需输入查询字符串。只需将您的值放在一个对象中,jQuery就会为您处理其余的工作。
var data = { name: $("#form_name").val(), email: $("#form_email").val(), message: $("#msg_text").val() }; $.ajax({ type: "POST", url: "email.php", data: data, success: function(){ $('.success').fadeIn(1000); } });