提取后未填充$ _POST

时间:2019-10-11 21:57:45

标签: javascript php http-post fetch

我已经花了很多时间来追求这个,希望有人能给出一个简单的答案。我正在使用访存来执行例程。服务器似乎没有填充帖子值。我简化了代码以尝试隔离它。一个简单的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'];
?>***

2 个答案:

答案 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不同,并且帖子丢失。