2012-03-17 73 views
0

我试图发送一些信息到一个php文件并显示返回的结果。首先,我没有收到来自php文件的任何结果,即xmlhttp.responseText没有任何值。我尝试了'something else'而不是responseText,这没有什么区别。但是当我注释掉//if (xmlhttp.readyState==4 && xmlhttp.status==200)时,结果会短暂出现。 我做错了什么?为什么我有Ajax通信问题?

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'); 
} 
.. 
+4

我在AJAX上遇到的每个问题通常都是通过尝试使用表单中的“提交”按钮提交AJAX请求而导致的。如果你这样做,确保你停止.submit()....另外,如果你使用jQuery,你的AJAX代码看起来会好得多:) – donutdan4114 2012-03-17 16:14:59

+0

神圣的废话,我只是浪费了整整一天,因为它?谢谢@ donutdan4114,它的工作。 – 2012-03-17 16:18:25

+0

我已经提交我的评论作为正确的'绿色复选标记'的答案。 – donutdan4114 2012-03-17 17:38:06

回答

1

我曾经有过与AJAX每一个问题通常是由试图提交使用“提交一个AJAX请求引起'按钮的形式。如果你这样做,请确保你停止.submit()....另外,如果你使用jQuery,你的AJAX代码看起来会好很多:)

0

正如其他用户用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); 

这将发出一个AJAX HTTP请求APACHE,金正日将运行PHP页面并返回页面的答案!

+0

“上面的请求直接访问update_profile2.php并获取php页面的全部内容,” - 不,它不。这是一个HTTP请求。 – 2012-03-17 18:30:16

+0

确定它是一个HTTP请求。但该请求不会发送到Apache Web服务器。其实我在我的机器上测试过它:只有“update_profile2.php”的结果是“?>“所以页面内容没有详细说明。随着http://localhost/update_profile2.php结果是“你好世界”。所以PHP页面被php引擎正确执行。 – 2012-03-17 19:06:25

+0

这是因为您正在使用file://协议浏览页面。 – 2012-03-17 19:09:51