问题,js 读取 xml 文档,返回数据 
------------------------------------------- 
a.html 
------------------------------------------- HTML code
......
<script type="text/javascript" src="b.js"></script>
<script type="text/javascript" src="c.js"></script>
<body>
<div id=name></div>
......
------------------------------------------- 
b.js 
------------------------------------------- JScript code
function loadPage(){
    
    //载入xml数据
    
    var url        =    "d.php";
    var method     =    "GET";
    var mess    =    "等待";
    var state    =    true;
    
    var xDoc    =    THXml(url,method,mess,state);
    
    alert(xDoc);
}
window.onload = function(){
        loadPage();
}
    ------------------------------------------- 
c.js 
------------------------------------------- 
JScript code
/*
    XML文档操作
*/
function THXml(url,method,mess,state){
    
    var xmlHttp        =    null;
    var xDoc        =    null;    function xHCreate(){        try     // Firefox,Opera
        {
            xmlHttp    =    new XMLHttpRequest();
        }
        catch(err)
        {
            try        //    新版IE
            {
                xmlHttp    =    new ActiveXObject("Msxml2.XMLHTTP");
            }    
            catch(err)
            {
                try        // 旧版IE
                {
                    xmlHttp    =    new ActiveXObject("Microsoft.XMLHTTP");    
                }    
                catch(err)
                {    
                    alert("您的浏览器不支持AJAX");
                    return false;
                }
            }
        }
    }
    
    function xHOpen(){
        return xmlHttp.open(method,url,state);
    }
    function xHsend(){
        return xmlHttp.send(null);
    }
    function xHStateChange(){
        
        if(xmlHttp.readyState    ==    4)    // 请求已完成(可以访问服务器响应并使用它)可以增加载入菜单动作Loading....
        {
            if(xmlHttp.status == 200)    // 请求已成功完成
            {    
                
                xDoc        =    xmlHttp.responseXML;    
            }
            else{
                
                alert(mess);
            }
        }
        else{
            getById("main").innerHTML = "请等待";
        }
    }
    
    function xHExec(){
        xHCreate();
        xHOpen();
        xmlHttp.onreadystatechange    =    xHStateChange;
        xHsend();
    }
    
    xHExec();
    return xDoc;
}
------------------------------------------- 
d.php 
------------------------------------------- 
PHP code
<?php
header("Content-Type: text/xml; charset:gb2312");echo "<?xml version='1.0' encoding='gb2312'?>
    <Person>
        <ID>
            a
        </ID>
        
    </Person>
     ";
?>====================================================== 现在我遇到个非常郁闷的问题,就是第一次载入的时候,b.js的xDoc为null,刷新一下就变成object了,不知道改怎么解决,让页面载入b.js的xDoc为返回的xml文档

解决方案 »

  1.   

    页面加载<script type="text/javascript" src="b.js"> </script>时,这个还没有THXml(url,method,mess,state); 所以为空,页面加载<script type="text/javascript" src="c.js"> </script>时,返回的是object是对的,因为responseXML返回的XML就是一个object,不得不说,你这个JS写的太那个了...先不说别的,你加载的顺序就不对,都没有THXml(url,method,mess,state),你怎么调用,都还没有生成<div id=name> </div> 你怎么给它添加内容你页面怎么有两个xDoc,不是不可以(一个全局,一个局部),这样是个不好的习惯,而且很容易出错.代码模块化是也是好事,但有时没那个必要,你搞么事为什么要这么写...    function xHOpen(){ 
            return xmlHttp.open(method,url,state); 
        }     function xHsend(){ 
            return xmlHttp.send(null); 
        }     function xHExec(){ 
            xHCreate(); 
            xHOpen(); 
            xmlHttp.onreadystatechange    =    xHStateChange; 
            xHsend(); 
        } 
        
        xHExec(); 
        return xDoc; 兄弟,说句真心话:任重而道远,加油!
      

  2.   

    我用jquery的ajax,要经这简单多了.