【发布时间】:2014-07-07 14:28:16
【问题描述】:
对此非常新,所以很抱歉我的问题很基本,但它让我难了几个小时。
我有一个联系表格,它使用一点 AJAX 来发布到我的 PHP 文件。我遇到的问题是,当我尝试让 PHP 将这些数据通过电子邮件发送给自己时,它并没有读取 POST 值。当我在没有 JS/AJAX 发布方法的情况下测试它时,PHP 正在工作,但是为了停止页面刷新,我使用了 AJAX 选项。现在我已经添加了 ajax,电子邮件结果没有显示数据(我可以检查并看到表单数据已填充,只是不清楚为什么它没有填充到电子邮件中) :
Name:
Email:
Message:
关于为什么我的邮件服务器只接收文本而不接收 POST 的任何指导
在表单上打开和关闭 HTML:
<form data-parsley-validate action="./assets/contactform.php" method="POST">
<div class="formRow">
<label for="name" class="obscure">Name</label>
<input type="text" name="nameInput" id="name" placeholder="Name" required data-parsley-error-message="Please enter your name"></input>
</div>
<div class="formRow">
<label for="email" class="obscure">Email</label>
<input name="emailInput" id="email" type="email" placeholder="Email" required data-parsley-error-message="Please enter a valid email address"></input>
</div>
<div class="formRow">
<label for="message" class="obscure">Message</label>
<textarea name="messageInput" id="message">Message</textarea>
</div>
<input type="submit" name="submit"></input>
PHP 脚本:
<?php
$to = 'hello@kymlangford.com';
$subject = 'Post from your website';
$message = "Name: " . $_POST['nameInput'] . "\n Email: " . $_POST['emailInput'] . "\n Message: " . $_POST['messageInput'];
$headers = 'From: hello@kymlangford.com' . "\r\n" .
'Reply-To: ' . $_POST['emailInput'] . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
exit;
?>
Java 格式:
$(函数() {
$.ajax({ type: 'POST', url: './assets/contactform.php', data: { name : $('input[name=nameInput]').val(), email : $('input[name=emailInput]').val(), message : $('textarea[name=messageInput]').val() }, dataType: 'json' }) event.preventDefault();});
});
--更新 08/07/2014--
下面是解决我问题的jquery代码
// get the data from the form
$('form').submit(function(event){
var fdata = $(this).serializeArray();
fdata.push({ name: 'submit', value: true });
$.post('./assets/contactform.php', fdata, function (data) {
alert('Data Loaded:' + data); });
console.log(fdata);
event.preventDefault();
});
});
【问题讨论】:
-
您的问题出在您的 js 代码上,尤其是在
data变量中。看看这个Ajax form not working (jQuery - PHP)。 -
嗯,在 javascript 中,您在 php
nameInput中拥有密钥name,依此类推。他们必须是一样的!另外,使用firebug 调试ajax 消息。 -
@Athafoud - 谢谢!该链接是一个超级帮助。我在搜索时找不到它,因为我显然问错了问题。谢谢!
-
@machineaddict - 不清楚您对匹配键的含义是什么?我以前从未使用过 PHP……但是一旦我更新了我的 JS,上面的脚本就可以完美运行。供将来参考,语法的哪一部分是错误的?
-
@user3812602:在ajax中,你发送的名字叫做
name,在php中你使用$_POST['nameInput'],它应该是$_POST['name']。知道了?而Java for the form实际上是javascript,它们是两种不同的编程语言。
标签: php ajax forms post submission