我试图将一些信息发送到php文件并显示返回的结果。首先,我没有从php文件中收到任何结果,即xmlhttp.responseText
中没有值。我试着放'something else'
,而不是responseText,这没有什么区别。但当我注释掉//if (xmlhttp.readyState==4 && xmlhttp.status==200)
时,结果会短暂出现。我做错了什么?
Ajax代码如下:
var div = 'display';
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
writeBack (div, xmlhttp.responseText+'something else', 'red');
}
}
xmlhttp.open("POST","update_profile2.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("rr="+id);
Php代码:
..
if(isset($_POST['rr']))
{
die('connection made');
}
..
我遇到的每一个AJAX问题通常都是由试图使用表单中的"提交"按钮提交AJAX请求引起的。如果你正在这样做,请确保停止.submit()…此外,如果你使用jQuery,你的AJAX代码看起来会更好:)
正如其他用户所说,使用jquery,代码看起来要好得多。
然而,我很确定你的问题是这条线:
xmlhttp.open("POST","update_profile2.php",true);
上面的请求直接访问update_profile2.php,并返回php页面的全部内容,而不是页面详细说明的输出。这是一种访问页面的方式,无需要求web服务器(使用php引擎)为您提供服务。当然http调用失败了,所以条件&;xmlhttp.status==200阻止执行填充div的下一条指令。
改为使用:
xmlhttp.open("POST","http://localhost/update_profile2.php",true);
这将向apache发送一个ajax http请求,il将运行php页面并返回页面的答案!