能够使用 $_GET 但不能接收数据 $_POST [重复]

Posted

技术标签:

【中文标题】能够使用 $_GET 但不能接收数据 $_POST [重复]【英文标题】:Able to receive data using $_GET but not $_POST [duplicate] 【发布时间】:2013-04-09 14:22:02 【问题描述】:

使用Ajax与服务器通信,

我正在尝试使用 AJAX 将一个值传递给 dat.php 并从 dat.php 返回另一个值。下面的代码在我使用 GET 时工作正常,但不适用于 POST。我需要使用 POST,因为这是我试图传递的敏感信息。知道为什么会这样。

这是我在 test.php 上的代码

<html>
<body>

<form action="<?php echo $_SERVER['$PHP_SELF'];?>" method="post">

<input type="text" name="value" onchange="ch_email1(this.value)"></input>

</form>



<script>
function ch_email1(str)
    var ajaxRequest;    
    try
        ajaxRequest = new XMLHttpRequest();
     catch (e)
        try
        ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
         catch (e) 
        try
        ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
         catch (e)
        // Something went wrong
                var xl=xmlhttp.responseText
        alert("Something Went wrong");
        return false;
            
        
    
    ajaxRequest.onreadystatechange = function()
        if(ajaxRequest.readyState == 4)
            var xl=ajaxRequest.responseText;
alert (xl);


        
    
    ajaxRequest.open("POST","dat.php?q="+str, true);
    ajaxRequest.send(null); 



</script> 
</body>
</html>

这是 dat.php

<?php


$q=$_POST['q'];

echo $q;

?>

请注意,当我将 POST 替换为 GET 时,上面的代码可以正常工作。任何想法为什么会发生这种情况。

【问题讨论】:

如果 jQuery 是一个选项,我建议使用它。它使 ajax 调用变得更加简单。 当您使用 post 时,您不能将数据作为查询字符串发送。 好吧,您没有在请求正文中发送任何 POST 数据... 请注意,POST 不保护敏感数据。您可能还想使用 HTTPS (SSL)。 【参考方案1】:

这可能会有所帮助:

 ajaxRequest.open("POST","dat.php", true);
 ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 ajaxRequest.send("q="+str);

【讨论】:

谢谢哥们....知道了:)【参考方案2】:

看看这个页面。http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

现在,您正在发送一个帖子请求,其中没有任何内容。附加到 url 只会更改 $_GET 变量。

【讨论】:

【参考方案3】:

您正在将POST Ajax 调用与GET 方式混合使用

当您使用 POST 发送 AJAX 调用时,您不必将参数放在 URL 上,但您必须使用 .send() 方法发送参数。

示例:

ajaxRequest.open("POST","dat.php",true);
ajaxRequest.send("q=" + str);

您应该使用像 jQuery 或其他这样的 JS 库,它会适合您,而不是重新发明***并遇到常见问题。

【讨论】:

以上是关于能够使用 $_GET 但不能接收数据 $_POST [重复]的主要内容,如果未能解决你的问题,请参考以下文章

php如何接收别的服务器post过来的数据 - 技术问答

AJAX中使用post,get接收发送数据的区别

php接收不到java程序post过来的数据

PayPal Webhook 不发送 POST 数据

PHP $_POST 不工作,但 $_GET 工作正常

PHP $_GET与$_POST