本帖最后由 zyouping 于 2011-11-24 15:26:46 编辑

解决方案 »

  1.   

    Xml代码 
    <?xml version="1.0" encoding="gbk"?>  
    <root>  
    <checkresult>  
    <%=result%>  
    </checkresult>  
    <checkresult>  
    <%=message%>  
    </checkresult>  
    </root>  
    其中返回两个内容,一个结果数,以及一个针对该结果数的消息。 AJAX这个就不用去说怎么样操作了,下面这个函数只将返回字符串组成XML包的形式: //装载字符串,将字符串组成XML的形式返回 
    Html代码 
    function loadXML(xmlString)  
    ...{  
        var xmldoc;  
        try ...{  
            xmldoc = new ActiveXObject("Microsoft.XMLDOM");  
            if(!xmldoc) xmldoc = new ActiveXObject("MSXML2.DOMDocument.3.0");  
        } catch(e)...{}  
        if(!xmldoc) ...{  
            return null;  
        } else ...{  
            xmldoc.async = "false";  
            xmldoc.loadXML(xmlString);  
            if(xmldoc.parseError.errorCode == 0 ) ...{  
                return xmldoc;  
            } else ...{  
                return null;  
            }  
        }  
    }  
    但其中需要注意一点,不能够直接利用返回得到的字节流,因为他们不属于字符串,这个时候需要将得到的字节流转换为字符串,才可以操作成功。我本人就遇到这个问题,直接操作就会出错,但我把这里传入的参数改为对应的XML字符串就可以,但我现在还不知道怎么样将字节流转换为字符串,因为总是要内网外网的切换做测试,挺麻烦的。 下面一个方面就是将XML中我们需要的数据,处理数组,这样我们就可以在其它的地方使用: //获得检测结果 Html代码 
    function getURLResult(URL)  
    ...{  
        var url = URL;  
        var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");  
        xmlhttp.open("POST", url, false);  
        xmlhttp.send();  
        var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.3.0");      
        xmlDoc = loadXML(bytes2BSTR(xmlhttp.responseBody));  
        var NodeLists = xmlDoc.selectNodes("/root/checkresult");  
        var result = new Array();  
          
       for(var i=0;i<NodeLists.length;i++)...{  
            result[i] = NodeLists[i].text;  
        }  
        return result;  
    }  
    在前台页面,就可以将需要的结果进行操作了。 
      

  2.   

    多谢楼上的,你说的挺详细的!自己已经弄出来了,只是刚开始不怎么熟悉XML,不知道该如何遍历!