我是PHP的新手,这种花哨的html写作风格。
我已经尝试了无数的修复和解决方法,但这里的表单不会保存到_POST全局数组中,我不知道为什么。我从一个教程到另一个教程,他们以同样的方式做。
(我甚至尝试盲目地应用以前类似问题中的一些答案,例如设置 action="<?=$_SERVER['PHP_SELF'];?>".那行不通。我的意思是。。。我没有尝试将操作转发到另一个页面,因为我有点需要它一遍又一遍地执行此确切形式。但是我尝试设置操作=索引.php。没有变化。
事实上,可能只是我拼错了什么,这让我发疯了。我真的希望有人能告诉我我做错了什么。
下面是被回显出来的 HTML。脚本.js是一个"验证脚本",基本上只是写入id="error"div。
pre Array() 是由 html 下面的代码部分生成的。
<!doctype html>
<html lang="en">
<head>
<script defer src ="script.js"></script>
<title>Form Widget</title>
</head>
<body>
<pre>Array
(
)
</pre>
<div id="error"></div>
<!--Render Form here-->
<form action="" method="POST" id="form">
<div>
<label>Name</label><br>
<input type="text" id="name" value=""/>
</div>
<div>
<label>Email</label><br>
<input type="text" id="email" value=""/>
</div>
<button type="submit">Submit</button>
</form></body>
</html>
这是相关的 php 代码。或者至少我认为这是相关的一点,因为其他一切似乎都很好......除了表单未保存的事实。哈哈。
<?php
// if($_POST != null){
echo '<pre>';
print_r($_POST);
echo '</pre>';
// echo $_POST['name']
//}
?>
这是脚本,以防
万一const name = document.getElementById('name')
const form = document.getElementById('form')
const errorElement = document.getElementById('error')
//We've been given no validation rules, so I added mock ones.
form.addEventListener('submit', (e)=> {
let messages = []
if (name.value == '' || name.value == null){
messages.push('Name is required.')
}
if(messages.length > 0) {
e.preventDefault();
errorElement.innerText = messages.join(', ')
}
})
您的<input>
标签需要具有name
属性。 例如<input type="text" name="email">
.name
属性不同于id
属性。浏览器不会提交未命名的输入。
您的表单将变为
<!--Render Form here-->
<form action="" method="POST" id="form">
<div>
<label>Name</label><br>
<input type="text" id="name" name="name" value=""/>
</div>
<div>
<label>Email</label><br>
<input type="text" id="email" name="email" value=""/>
</div>
<button type="submit">Submit</button>
</form>