刚学习javascript,写一个小游戏做练习,现在想要做一个配置文件,练习一下XML的操作……
进入正题:如下xml文件:profile.xml
<?xml version="1.0" ?>
<configuration>
<row>Hello</row>
<col>word!</col>
</configuration>在google搜索结果中出现频率比较高的一段代码:
javascript文件:test.js
var doc = loadXmlFile("profile.xml");
alert(doc.text);
function loadXmlFile(xmlFile){
  var xmlDom = null;
  if (window.ActiveXObject){
    xmlDom = new ActiveXObject("Microsoft.XMLDOM");
    //xmlDom.loadXML(xmlFile);//如果用的是XML字符串
    xmlDom.load(xmlFile);//如果用的是xml文件。
  }else if (document.implementation && document.implementation.createDocument){
    var xmlhttp = new window.XMLHttpRequest();
    xmlhttp.open("GET", xmlFile, false);
    xmlhttp.send(null);
    xmlDom = xmlhttp.responseXML;
  }else{
    xmlDom = null;
  }
  return xmlDom;
}这个方法在IE下能正常输出“hello word”,IE9、以及IE9的IE7、IE8的兼容模式都正常。
但是在firefox下输出的是“undefined”
而Chrome下则无输出,提示 xmlhttp.send(null);这行 Uncaught Error: NETWORK_ERR:XMLHttpRequest Exception 101还有一种方法是用JQuery
$.get('profile.xml',function(xml){    
        alert($(xml).text());    
    });
按理JQuery是兼容不同浏览器的,但是这段代码在IE7,8,9及Firefox下能正常输出
在Chrome下只弹出一个空警告框……
是Chrome有问题?还是其他的什么问题?等待高手解答……不甚感激……

解决方案 »

  1.   

    你这段代码在什么环境下测试的?离线网页吗?如果是,你要放到你网站环境下测试,如:http://localhost/xxx.php
      

  2.   

    你的第一个方法里,ie是利用的本地对象,所以没问题。其他的是利用ajax原理。这个需要服务器端得环境。你在一个EDI里面试试。比如说vs。
      

  3.   

    我的本意是告诉你,离线测试IE可以,FF下你的测试成为了跨域限制的杯具了
      

  4.   

    不理解这句话…… FF下成功了~是Chrome下没成功。 
      

  5.   

    总说不到一个点子上。
    你把问题通盘考虑一下就清楚了:
    用JS的xhr对象,离线测试IE处理了不视为跨域所以OK;其他视为跨域就报错。
    用JQUERY的AJAX,FF可能也处理了跨域问题所以OK;Chrome不成功可能也是视为跨域就报错了。你用JQ在http协议下上线试试不就知道什么原因了?如果可以,那就是Chrome确实认为离线时跨域了。
      

  6.   

    function loadXMLDoc(dname) 
    {
    try //Internet Explorer
      {
      xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
      }
    catch(e)
      {
      try //Firefox, Mozilla, Opera, etc.
        {
        xmlDoc=document.implementation.createDocument("","",null);
        }
      catch(e) {alert(e.message)}
      }
    try 
      {
      xmlDoc.async=false;
      xmlDoc.load(dname);
      return(xmlDoc);
      }
    catch(e) {alert(e.message)}
    return(null);
    }function init() { 
     xmlDoc=loadXMLDoc("test.xml");}
      

  7.   

    html 本身就是个xml,
    操作xml跟操作html基本上是一样的.加载xml 分ie和非ie两种,
    加载方式 有分同步和异步两种.具体的操作,你随便抓本js的书 都有的,我就不啰嗦了