使用 jQuery 提交表单并使用 PHP 发送.. 不知道为啥它不发送
Posted
技术标签:
【中文标题】使用 jQuery 提交表单并使用 PHP 发送.. 不知道为啥它不发送【英文标题】:Form submitting with jQuery and sending with PHP.. Can't work out why its not sending使用 jQuery 提交表单并使用 PHP 发送.. 不知道为什么它不发送 【发布时间】:2011-05-11 12:56:23 【问题描述】:控制台没有显示任何错误,Firebug 也没有,所以我不知道为什么这不起作用。
我的表格:
<form action="" method="post" id="sendEmail">
<div class="alignleft">
<p><label for="order_ref">Photo ID:</label><input type="text" name="order_ref" id="order_ref" class="text smallinput" disabled="disabled" value="<? echo $ref; ?>"/></p>
<p><label for="order_name">Full Name:</label><input type="text" name="order_name" id="order_name" class="text" tabindex="10" /></p>
<p><label for="order_telephone">Contact Number:</label><input type="text" name="order_telephone" id="order_telephone" class="text" tabindex="20" /></p>
<p><label for="order_email">Email Address:</label><input type="text" name="order_email" id="order_email" class="text" tabindex="30" /></p>
</div>
<div class="alignright">
<p class="higher"><label for="order_message">Message</label><textarea name="order_message" id="order_message" class="uniform" tabindex="40"></textarea></p>
</div>
<div class="rounded color_grey"><p>Clicking confirm will mail your order to us. We'll be in touch shortly. <input type="submit" id="submit" name="submit" value="" class="alignright" /></p></div>
</form>
然后是我的 JS:
// javascript 文档 var g = jQuery.noConflict(); g(文档).ready(函数() g("#submit").click(函数() // 将初始错误值设置为 false var hasError = false; // 为每个表单字段设置 var var order_ref = g("#order_ref").val(); var order_name = g("#order_name").val(); var order_telephone = g("#order_telephone").val(); var order_email = g("#order_email").val(); var order_message = g("#order_message").val(); // 验证它们中的每一个 if(order_ref == '') g("#order_ref").addClass('haserror');有错误=真; if(order_name == '') g("#order_name").addClass('haserror');有错误=真; if(order_telephone == '') g("#order_telephone").addClass('haserror');有错误=真; if(order_email == '') g("#order_email").val().addClass('haserror');有错误=真; if(order_message == '') g("#order_message").val().addClass('haserror');有错误=真; // 如果没有错误,继续 如果(hasError == false) //alert('没有错误'); g.post("/photo/theme/foodphoto/includes/mail_send.php", // 将每个表单值传递给 PHP 文件进行处理 order_ref: order_ref, 订单名称:订单名称, order_telephone: order_telephone, order_email: order_email, order_message: order_message , 功能(数据) // 没有错误?太好了,现在做你想向用户展示他的消息发送的事情 警报(“已发送”); ); 返回假; ); );以及应该发送它的 PHP (mail_send.php)
<?php
// receive & save each of the vars from the AJAX request
$order_ref = $_POST['order_ref'];
$order_name = $_POST['order_name'];
$order_telephone = $_POST['order_telephone'];
$order_email = $_POST['order_email'];
$order_message = $_POST['order_message'];
// setup the email requirements
$to = "email@address.com";
$subject = "Order Has Been Placed";
// what must be in the mail message
$message = "The following order has been placed on your website:";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '.$order_name.' <'.$order_email.'>';
mail($to, $subject, $message, $headers);
?>
控制台报告没有 PHP 问题,而 Firebug(我是新手,所以我可能跳过了一些东西?)报告没有问题...?
我做错了什么?
【问题讨论】:
您没有收到电子邮件? FireBug Net 面板显示什么?发帖了吗? 如果我在 mail_send.php 中回显“完成”,我会在萤火虫的响应选项卡中看到“完成”。因此,似乎正在处理 PHP? @matt_asbury:不,我没有收到邮件 【参考方案1】:在使用提交的输入类型时不要使用 .click 处理程序。切换到
g("#sendEmail").submit(function()
然后看看当你点击提交时你是否按预期调用了 JS。
【讨论】:
感谢 paul.. 此更改没有产生任何明显差异。 马克,我刚刚在测试服务器上设置了这个,我可以毫无问题地接收到 Gmail 的邮件。您发送邮件的电子邮件地址是否有可能将它们作为垃圾邮件拒绝? 感谢您的帮助,保罗……我犯了一个愚蠢的错误……我是直接打开 URL,而不是从 CMS 环境中打开,顶部的 CMS 特定模板标签是导致它失败...不知道为什么控制台从未报告过该错误...无论如何感谢您的帮助! :)【参考方案2】:附带说明,您可以通过使用 $(FORM ID or CLASS).serialize() 序列化表单数据来减少编写的代码量
干杯!
【讨论】:
感谢 Luckner,但我目前的 JS 知识还不是很好:P 我会到达那里的 :)【参考方案3】:您的 js 代码未被调用,因为您添加了提交按钮,当点击该按钮时,它将提交表单而无需等待触发点击事件,因此您可以将按钮更改为点击,然后从点击事件提交表单或您可以使用提交事件
干杯!
【讨论】:
以上是关于使用 jQuery 提交表单并使用 PHP 发送.. 不知道为啥它不发送的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery-AJAX 向 PHP 提交表单并在不刷新的情况下在 div 中显示新内容的问题