我很难创建一个简单的表单,即获取用户输入的电子邮件地址并将其存储在服务器端.log文件中。
HTML&index.php:中的JQuery
<div>
<form id="form" method="post" action="">
<input name="field1" type="Your Email" id="field1" />
<input type="submit" value="Sign me up!" id="submitme">
</form>
</div>
<script>
$("#submitme").click(function(event){
event.preventDefault();
var form_data = $("#form").serialize()
$.ajax({
type: 'POST',
data: form_data,
url: 'action_page.php',
});
});
</script>
我在action_page.PHP中的PHP:(也就是说,将发布的数据保存到.log中)
<?php
if (isset($_POST['form_data'])) {
$txt=$_POST['form_data'];
file_put_contents('test.log',$txt."'n",FILE_APPEND|LOCK_EX);
exit();
}
?>
单击提交按钮后,页面只会刷新,不会向我的.log文件中添加任何内容。我觉得这个问题与我在ajax函数和action_page.php中引用数据的方式有关。我已经尝试了在各种stackoverflow帖子中看到的所有不同的方法,但我似乎找不到正确的方法。
提前谢谢。
form_data
按此方式运行,field1=value
。它将单个<input>
的name
作为POST
的密钥,因此您需要在PHP文件中执行以下操作:
<?php
if (count($_POST) && !empty($_POST['field1'])) {
$txt = $_POST['field1'];
file_put_contents('test.log', $txt . "'n", FILE_APPEND | LOCK_EX);
exit();
}
?>
此外,我正在检查!empty()
而不是isset()
,因为它肯定会被设置。同时检查$_POST
的计数,将确保这只在POST
方法中运行。
更新
注意:您将无法在屏幕中看到输出,但它会写入文件中。您可以通过查看控制台窗口来检查响应
我刚刚看到你刷新了页面。可能是,您忘记包含jQuery库了吗?你需要检查控制台的错误,它应该说:
$ is not a function.
因此,为了解决这个问题,请在<script>
标签之前添加jQuery库:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
如果有效,请告诉我。也请检查您的控制台是否存在错误。
您没有传递任何名为form_data
的变量。您正在传递:data: form_data
,其形式为key=value&key2=value2
。
一种解决方案是将其传递到一个新对象中:
$.ajax({
type: 'POST',
data: {
form_data: form_data
},
url: 'action_page.php',
});