我想用php 写一个运用到ajax 的program. 但不知为何callback时, responseXML经常return null object. 以下是source codeclient side:
<html>
<head>
<title>
test for AJAX
</title>
<script type="text/javascript">
    var req;  
    function ser(){
        if (window.XMLHttpRequest) {   
            req = new XMLHttpRequest();  
        }else if (window.ActiveXObject) {   
            req = new ActiveXObject("Microsoft.XMLHTTP");  
        }  
                  
        if(req){  
            req.open("GET","/TestAJAX/serverSide.php",true);
            req.onreadystatechange = callback;  
            req.send(null);  
        }
        
    }
    function callback() {  
        if (req.readyState == 4) {  
            if (req.status == 200) {  
                var xmlDoc=req.responseXML;
                v = xmlDoc.getElementsByTagName("firstname")[0].firstChild.nodeValue;
                var x = document.getElementById("rtext");
                x.value = v;
                
            }else{  
                alert ("Not able to retrieve description" + req.statusText);  
            }  
        }  
    }  
</script>
</head>
<body>
    <input type="text" id="rtext" size="19">
    <input type="button"  onclick="ser()" value="click">
</body>
</html>
server side:
<?php
header("Content-type: text/xml;charset=UTF-8");
header("Cache-Control: no-cache");echo '<?xml version="1.0" encoding="utf-8"?>';echo "<person>";
echo "<firstname>aaaaaaa</firstname>";
echo "<lastname>bbbbbbb</lastname>";
echo "<age>ccccccc</age>";
echo "<hometown>dddddddd</hometown>";
echo "<job>eeeeeee</job>";
echo "</person>";
?>
当我用Firebug 去看server 的response 时, server response 成以下的:
嚜�<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at D:\AppServ
\www\TestAJAX\serverSide.php:1) in <b>D:\AppServ\www\TestAJAX\serverSide.php</b> on line <b>2</b><br
 />
<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at D:\AppServ
\www\TestAJAX\serverSide.php:1) in <b>D:\AppServ\www\TestAJAX\serverSide.php</b> on line <b>3</b><br
 />
<?xml version="1.0" encoding="utf-8"?><person><firstname>aaaaaaa</firstname><lastname>bbbbbbb</lastname
><age>ccccccc</age><hometown>dddddddd</hometown><job>eeeeeee</job></person>
看它的response,它似乎改不了个header,我想问有什么办法解决??

解决方案 »

  1.   

    你请求的php文件问题 ,
    试试把请求的页面加个
    error_reporting(0);
    ob_start();
      

  2.   

    终于找到问题所在了, 原来我的server 个个php页面用了utf8 encode, 
    之后如果用了楼上的方法, 就会没有warning statement, 但仍然有
    "嚜�" 的乱码存在, 以至ajax失败.
    但如果用返ansi encode, 乱码同warning都会消失,ajax成功
      

  3.   

    终于找到问题所在了, 原来我的server 个个php页面用了utf8 encode, 
    之后如果用了楼上的方法, 就会没有warning statement, 但仍然有
    "嚜�" 的乱码存在, 以至ajax失败.
    但如果用返ansi encode, 乱码同warning都会消失,ajax成功