0

使用 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 时,上面的代码可以正常工作。任何想法为什么会发生这种情况。

4

3 回答 3

2

这可能会有所帮助:

 ajaxRequest.open("POST","dat.php", true);
 ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 ajaxRequest.send("q="+str);
于 2013-04-17T00:52:01.393 回答
1

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

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

于 2013-04-17T00:51:52.833 回答
0

您正在将POSTAjax 调用与GET方式混合

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

例子:

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

您应该使用像 jQuery 或其他这样的 JS 库,这将为您完成,而不是重新发明轮子并遇到常见问题。

于 2013-04-17T00:52:08.813 回答