为什么我有ajax通信问题


Why am I having ajax communication issue?

我试图将一些信息发送到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页面并返回页面的答案!