我已经花了很多时间来追求这个,希望有人能给出一个简单的答案。我正在使用访存来执行例程。服务器似乎没有填充帖子值。我简化了代码以尝试隔离它。一个简单的html表单使js请求发出一个提取,包括用户名和pwd的帖子。这些值将传递到服务器,但目标php页面的$ _POST数组为空。代码如下。有什么想法吗?
发起请求的网页
***
<html>
<head>
<script src="/js/2.js"></script>
</head>
<body>
<h1>Who are you?</h1>
<form action="" method=POST>
<label>User Name</label>
<input id=username type=text autocomplete='username' name=username>
<label>Password</label>
<input id=pwd type=password autocomplete='current-password' name=pwd>
<input type=submit value="log in" onclick="login();">
</form>
</body>
</html>***
javascript从php页面获取响应
***
async function login(){
let content = "username=buddy&pwd=xxxxxxxxx";
let response = await fetch("http://example.com/lib/2.php",{method: "POST", body: content });
var text = await response.text();
if(text == 1){
window.open("http://example.com", "_self");
}else{
alert(text);
}
}***
**php page where post does not populate**
***
<?php
echo "user name is ".$_POST['username'];
?>***
答案 0 :(得分:0)
答案未在此处列出,但有人通过电子邮件将答案发送给我。有人告诉我使用确实有效的FormData。谢谢。
我很沮丧地看到有人用否定的1来标记我的问题。对于喜欢快速谴责别人的其他人,我有一个建议。尝试有点同理心。
我花了几个小时来解决这个问题。我已经多次使用Ajax来完成此功能,而没有任何问题。我一如既往地在Ajax中实现了此功能,但没有成功。我将它与其他数十个有效的代码段进行了比较,但事实并非如此。
我想我会尝试获取是否可以立即使用。来自Ajax,我将主体设置为url字符串,并将标头设置为application / x-www-form-urlencoded。我查看了提琴手中请求的踪迹,与成功运行的请求相比,一切看起来都不错,但是什么也没回来。
我研究了Google搜索中的提取帖子,并阅读了一些示例。我看到了许多使用JSON.stringify的示例,但没有成功。
所以,如果有人想因为不尝试而将我打败,……就这样吧。
答案 1 :(得分:0)
更新:原来,代码没有任何错误。引入formdata工作是偶然的。在进一步测试中,它也失败了。实际上,执行代码有时可行,有时却没有。我将问题归结为session_start的用户。我需要对session_start的使用进行更多研究,所以我不确定为什么会导致此问题,但是我怀疑$ _POST与会话ID相关联,并且在某些情况下会话ID匹配并且帖子可见并且在其他情况下,会话ID不同,并且帖子丢失。