能够使用 $_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 [重复]的主要内容,如果未能解决你的问题,请参考以下文章