load(文件)的方法改为loadXML(str)方法

解决方案 »

  1.   

    那请问有没有load url的方法?
      

  2.   

    没有吧,不过可以responseText可以得到啊
      

  3.   

    试过responseXML和responseText都不行
    返回的都是undifined
      

  4.   

    http://abc.com/do?id=4464
    返回应该是文本格式"text/html"而不是xml格式。
    而http://abc.com/abc.xml返回的是xml格式。
    原因是服务器对xml后缀的文本格式文件默认以xml格式发送。而其他的大多数以 html格式发送需要在你的do文件中设置header为xml格式。
      

  5.   

    我这个do是通过一个jsp模版,把数据库中的关键数据以
    <?xml version="1.0"?>
    <Root>
    ....
    </Root>
    形式输出
    我已经定义了response.setHeader("Content-Type","text/xml");
    但是仍然取不到任何数据
    无论responseText还是responseXML反馈的都是undefined
      

  6.   

    var xml = new ActiveXObject( "Msxml2.DOMDocument" );
    xml.load("http://abc.com/do?id=4464");
      

  7.   

    看我的博客就知道了
    sanshisong.cnblogs.com
    而且解决了兼容性的问题
      

  8.   

    谢谢各位
    特别是shenjf2000(一路走来) 
    目前有了新的进展
    已经在ie下可以拿到responseText了
    但是在mozilla下responseText和responseXML仍然是undefined
    有没有好的建议?
    先结帐。
      

  9.   

    这个情况倒是没有碰到过。
    一般如果能够拿到responseText那么不管IE还是Mozilla都可以拿到,但是如果IE或者Mozilla其中一个拿到responseXML不一定另外一个也能拿到。因为IE和Mozilla对xml文档的要求不一样,有些格式的xml文档IE认但是mozilla可能认为是错误的,反之也是。根据你的情况调试也比较简单,因为可以拿到responseText,说明你的do文件肯定不是xml格式,因此无论在IE或者mozilla中都不要想用responseXML去拿数据。
    至于Mozilla拿responseText也是undefined,我想可能是你的代码在Mozilla中根本没有收到服务器的响应。 
    你可以一步步一调试一下。比如使用下面一段代码,看看几个状态是否都有debug出来
    function ajaxReady(){
    var state=ajax.readyState;                         
    switch(state)
    {
    case 0:
    case 1:
    case 2:
    case 3:
    if(debug>2)
    {
    myDebug("state=0--3"+state);
    }
    break;
    case 4:
    switch(ajax.status)
    {
    case 200:
    connectSuccess();
                                                  myDebug('request success')
    break;
    case 400:
    case 500:
    default:
    connectFail();
    break;
    }
    break;
    default:
    myDebug("other state?"+state);
    break;
    }
    };
    var debug=3;              设置调试等级。
    function myDebug(message){调试代码,比如直接使用alert(message)}