为啥PHP收不到AJAX发出的post请求

Posted

技术标签:

【中文标题】为啥PHP收不到AJAX发出的post请求【英文标题】:Why does PHP does not receive the post request that made by AJAX为什么PHP收不到AJAX发出的post请求 【发布时间】:2020-10-19 09:54:41 【问题描述】:

这是我的 javascript 代码,成功事件被执行。但是 php 文件中的 post 数组仍然为空。

    document.querySelector(".postButtons").addEventListener("click",(e)=>
    const postID = e.target.value;
    if(e.target.id == "edit")
        //Send post request to edit the post
        $.ajax(
            type: 'POST',
            url: '../edit.php',
            data: postID : postID,
            contentType: 'application/json; charset=utf-8',
            data: 'json',
            cache: false,
            success: function(response) 
                window.location.href="../edit.php"
            ,
            error: function(err)
                console.log(err)
            
        )
    else if(e.target.id == "del")
        //Send post request to delete the post
    
)

  <?php
if(isset($_POST["postID"]))
    echo $_POST["postID"];
 
?>

我试图用javascript将变量记录到控制台,它似乎工作。当我试图返回它时,状态码是200。

【问题讨论】:

这能回答你的问题吗? Submitting JSON data via JQuery ajax.post to PHP 【参考方案1】:

window.location.href 执行常规 GET 请求。因此,您在页面上看不到 postID。您可以在请求中的控制台中看到 postID

但是如果你想在页面重新加载时看到 postID,那么你需要使用表单发送这个请求,而不是 ajax。

<form action="../edit.php" method="POST" id="sendForm">
    <input type="hidden" name="postID" id="postID">
    <input type="submit">
</form>

if(e.target.id == "edit")
    $('#postID').val(postID);
    $('#sendForm').submit();

【讨论】:

以上是关于为啥PHP收不到AJAX发出的post请求的主要内容,如果未能解决你的问题,请参考以下文章

发出 Ajax POST 请求时出现“parseerror”

PHP为啥接收不到POST 的数据?

form表单,“post”方式,提交onclick=submit() 为啥服务器不执行?

发出 ajax Post 请求时出现 403 禁止错误

jq.ajax的post请求到CI的controller,为啥控制器获取不到值啊

JQuery Ajax POST 抛出空错误而不发出请求