能够使用$ _GET而不是$ _POST接收数据

时间:2013-04-17 00:46:21

标签: php ajax post get

使用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;

?>

请注意,当我用GET替换POST时,上面的代码工作正常。任何想法为什么会这样。

3 个答案:

答案 0 :(得分:2)

这可能会有所帮助:

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

您正在使用POST方式混合GET Ajax电话

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

为例:

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

你应该使用像jQuery或其他的JS库,这将为你创造,而不是重新发明轮子并有共同的问题。