【发布时间】:2020-12-28 19:18:12
【问题描述】:
在反复解决这个问题几个小时后完全糊涂了。尝试了很多方法,都没有成功。
意图是将登录表单数据发送到 PHP 并让 PHP 返回 API 调用的结果。
我的最新方法是在login.html 调用myFunction() 中使用表单提交,它执行对n_authorise.php 的POST 调用以进行某些服务器端处理。将来 PHP 将返回 API 机密。对于我的测试,我将 PHP 剥离回 echo,从 $_POST 全局中提取用户输入。
无论我尝试何种形式的 ACTION / SUBMIT 或 XMLHttpRequest 结构组合,我似乎都无法将 HTML 中的 $_POST 传递给 PHP。我反复从 PHP 中得到“未定义的索引”,表明 $_POST 没有被填充。
我已经在表单中直接尝试了 action="n_authorise.php" (避免 myFunction() ),但这要么失败,要么在它工作时将 PHP 文件加载到浏览器,而不仅仅是返回结果。
我很沮丧,因为它必须是可能的,我可以从其他帖子中看到他们已经(并解决了)类似的问题......我就是无法破解它,所以请教专家!提前致谢。
我在 login.html 文件中的 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>
我在文件n_authorise.php中的最小PHP
<?php
$email = $_POST["t_username"];
$password = $_POST["t_password"];
echo $email . " " . $password;
?>
预期结果是警报框显示输入的电子邮件和密码(这将在最终版本中被替换)。
注意:我尝试过使用和不使用xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");。事实上,我想我已经尝试了几乎所有可能的代码组合,但都没有成功……但是。
【问题讨论】:
-
我想你错过了一些东西,请阅读:w3schools.com/xml/ajax_xmlhttprequest_send.asp 在 PHP 中也使用 isset 函数来防止未定义的错误
-
您没有向您的 xmlhttp-request 添加任何参数 ....
-
@Baracuda078 - 这是我读过的众多资料之一(多次),但我看不出我错过了什么。一旦我知道我可以让这个最简单的例子工作,我会添加 isset 函数。
-
您需要在 `xmlhttp.send();` 函数中添加要发送的数据,就像 w3schools 上的 post request 示例一样,希望对您有所帮助
-
@johnSmith - 谢谢 - 我想在 PHP 中使用 $_POST 全局变量。如何确保通过(我知道它无法在客户端访问)?
标签: php html xmlhttprequest undefined-index