就像我的标题所说,我的电子邮件表单在电子邮件中提交“未定义”。让我从一些代码开始......
HTML:
<form action="contactform.php" method="post" enctype="multipart/form-data" name="contact">
<input name="name" type="text" value="Name" onfocus="if(this.value=='Name') this.value='';" />
<input name="email" type="text" value="Email address" onfocus="if(this.value=='Email address') this.value='';" />
<input name="phonemodel" type="text" value="Phone model" onfocus="if(this.value=='Phone model') this.value='';" />
<textarea name="comments" cols="" rows="" style="height:130px;" onfocus="if(this.value=='Type your message here.') this.value='';" >Type your message here.</textarea>
<input type="image" name="button" value="Submit" src="../media/btn_play_submit.png" style="margin-right:5px; margin-top:12px;" />
</form>
PHP:
<?php
if(isset($_POST['name'])) {
$to = 'MYEMAILHERE';
$headers = "From: blahblahblah\r\n";
$subject = "Online Contact Submission Received\r\n";
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phonemodel'];
$comments = $_POST['comments'];
$message .= "Name: " . $name . "\r\n";
$message .= "Email: " . $email . "\r\n";
$message .= "Phone Model: " . $phone . "\r\n";
$message .= "Comments: " . $comments . "\r\n";
mail($to, $subject, $message, $headers);
}
?>
我收到的电子邮件看起来像这样(是的,我将文字放在字段中......):
Name: undefined
Email: undefined
Phone Model:
Comments: undefined
我注意到的第一件事:“手机型号”并没有像其他人那样说“未定义”。第二,为什么其他人说未定义而不是我放入的文本?
提前致谢。
答案 0 :(得分:4)
尝试更改
$message .= "Name: " . $name . "\r\n";
到
$message = "Name: " . $name . "\r\n";
编辑:以下示例:
if(isset($_POST['name'])) {
var_dump($_POST);
exit;
答案 1 :(得分:1)
尝试删除标题和主题后的换行符“\ r \ n”,它们可能会与邮件功能混在一起。
$headers = "From: blahblahblah\r\n";
$subject = "Online Contact Submission Received\r\n";
要:
$headers = "From: blahblahblah";
$subject = "Online Contact Submission Received";
如果不这样做,请转储$ _POST数组并检查它是否获得表单处理程序。
答案 2 :(得分:1)
首先,只需打印这些变量即可缩小问题范围。 当它没有正确打印。尝试使用GET代替$ _POST ['xxx'] - &gt; $ _GET ['xxx'],method ='post' - &gt;方法=“得到” 当然,这不是你想要的,只是为了确保。
Web服务器中有一些选项可以禁用GET和/或POST。您是否在新的未配置服务器上进行测试?
答案 3 :(得分:1)
您似乎使用的不是HTML&amp; PHP运行您的网站/表单。在PHP或Javascript中是否还有其他库可能会在您的脚本出现之前触及它?
除非您按the documentation提交enctype
,否则您应该将表单application/x-www-form-urlencoded
更改为files, non-ASCII data, and binary data
。
multipart/form-data
会给你一些奇怪的行为。至少,那是我明确的经历。
答案 4 :(得分:1)
除上述所有解决方案外,您还可以使用placeholder="text you want to display"
代替onfocus="if(this.value=='Name') this.value='';"
。可能是那里的价值出现了问题......
答案 5 :(得分:0)
修正了它。事实证明它在进入PHP之前经历了一些jQuery然后是AJAX,这是造成我所有问题的原因。
当你被投入项目并且不太了解它时会发生这种情况。 :/
谢谢大家。
答案 6 :(得分:0)
引用本地文件时,请按以下顺序放置这些引用:
移动CSS
jQuery mobile的JS。
不合适会导致此错误
<强>正确强>:
<script src="jquery-1.7.1.min.js">
<script type="text/javascript" src="jq-all-debug.js">
<script src="jquery.mobile-1.1.1.min.js">
<强>错强>:
<script src="jquery-1.7.1.min.js">
<script src="jquery.mobile-1.1.1.min.js">
<script type="text/javascript" src="jq-all-debug.js">