使用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时,上面的代码工作正常。任何想法为什么会这样。
答案 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库,这将为你创造,而不是重新发明轮子并有共同的问题。