Ajax POST方式发送请求服务器接收不到数据问题解决办法
直接看源码
代码如下 | |
<script language="javascript"> |
php 代码如下:
代码如下 | |
<?php |
于是在构建发送数据时由字符串改成了JS对象,可是还是不行。只好查资料了。原来是要设置一下发送数据的编码类型的。代码如下:
代码如下 | |
var Myquery = Myinput(); xmlhttp.open("POST","post.php",true); xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xmlhttp.onreadystatechange = byphp; |
xmlhttp.send(Myquery);application/x-www-form-urlencoded编码类型是表单发送数据的默认编码类型,想不到在AJAX请求中要明确注明,这样添加了第三行的代码注明格式后果然就正确了,问题解决。如果通过JQUERY发送POST方式的AJAX请求就方便多了,不用添加这一行。再一次感受到了JQUERY的强大和便捷。
想用POST发送Ajax异步请求,就要把你的数据统一放在send()方法中发送,而不能是send(null)。
代码如下 | |
Xml.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); |
这一句在GET方式中不要写,但是在POST方式中是必须的,由于你在POST方式中用了send(null),导致没有发送任何数据到index1.php,所以看不到这一句的效果。
代码如下 | |
get('index1.php?c=1',a)" get('index1.php?c=2',a)" |
两个按钮发送的数据只有c这个参数不同,所以可以把index1.php和a都写在你这个get方法的内部,修改以后的get方法是这样的
代码如下 | |
function get(num) { data="index1.php?"; if(Xml){ var obj=document.getElementById("a"); Xml.open("POST",data); Xml.onreadystatechange=function() { if(Xml.readyState==4&&Xml.status==200){ obj.innerHTML=Xml.responseText; } } Xml.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); var queryString="c="+num; Xml.send(queryString); } } |
当然
代码如下 | |
get('index1.php?c=1',a)" get('index1.php?c=2',a)" 也要相应的改成 get(1); get(2); |
这样就可以成功地用POST方法向服务器异步请求数据了