提问人:GCOR71 提问时间:9/10/2020 最后编辑:GCOR71 更新时间:9/10/2020 访问量:295
如何将 $_POST 从 HTML 脚本传递到 PHP(出现“未定义索引”错误)
How to pass $_POST from HTML script to PHP (getting "Undefined index" error)
问:
在一遍又一遍地讨论这个问题几个小时后,完全感到困惑。尝试了大量的方法,但没有成功。
目的是将登录表单数据发送到 PHP,并让 PHP 返回 API 调用的结果。
我的最新方法是在调用中使用 onSubmit 表单,该表单执行 POST 调用以进行某些服务器端处理。将来,PHP 将返回 API 密钥。在我的测试中,我剥离了 PHP,以支持从 $_POST 全局中提取的用户输入。login.html
myFunction()
n_authorise.php
echo
无论我尝试哪种形式的 ACTION / SUBMIT 或 XMLHttpRequest 结构组合,我似乎都无法将 $_POST 从 HTML 传递到 PHP。我反复从 PHP 中得到“未定义索引”,建议未填充 $_POST。
我尝试过 action=“n_authorise.php” 直接以形式(避免)进行,但这要么失败,要么在工作时将 PHP 文件加载到浏览器,而不仅仅是返回结果。myFunction()
我感到非常沮丧,因为这是可能的,我可以从其他帖子中看到他们遇到(并解决了)类似的问题......我就是破解不了,所以问问专家吧!提前致谢。
我的 HTML 在文件 login.html 中:
<html>
<head>
<script>
function myFunction() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
};
xmlhttp.open("post", "n_authorise.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
}
</script>
</head>
<body>
<form name="loginform" onsubmit="myFunction()" method="post">
<input type="text" name="t_username" id="t_username" placeholder="Username" required autofocus>
<input type="password" name="t_password" id="t_password" placeholder="Password" required>
<input name ="submit" type="submit" value="submit">
</form>
</body>
</html>
我的最小PHP在文件中n_authorise.php
<?php
$email = $_POST["t_username"];
$password = $_POST["t_password"];
echo $email . " " . $password;
?>
预期结果是警报框显示输入的电子邮件和密码(这将在最终版本中被替换)。
注意:我试过有和没有.事实上,我想我已经尝试了几乎所有可能的代码组合,但没有成功......还。xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
答:
这是一个最简单的答案:
您没有向请求添加任何参数,您可以使用本机 JS 进行如下操作:
var form = document.querySelector('form'); // <-- extend this to select your form, maybe add an id to select
var data = new FormData(form);
var req = new XMLHttpRequest();
req.send(data); // <----- this way the form data is appended
评论
id="form1"
#form1
基于上述内容 - 分享工作代码,并表示感谢。仅供参考:
<html>
<head>
<script>
function myFunction() {
var form = document.querySelector('form.loginform'); // <-------- extended to select new class ID for form
var data = new FormData(form); // <-------- 'data' extracts form content
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert(xmlhttp.responseText);
}
};
xmlhttp.open("post", "n_authorise.php", true);
xmlhttp.send(data); // <-------- 'data' sent to PHP!
}
</script>
</head>
<body>
<form name="loginform" class="loginform" onsubmit="myFunction()" method="post">. // <-------- new class added
<input type="text" name="t_username" id="t_username" placeholder="Username" required autofocus>
<input type="password" name="t_password" id="t_password" placeholder="Password" required>
<input name ="submit" type="submit" value="submit">
</form>
</body>
</html>
评论