下面这段代码,只能在ie下通过,firefox下因为不能跨域读取数据,所以不能在ff下运行。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> New Document </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="EditPlus">
<meta name="Author" content="kind">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head><style>
body {
    font-size: 12px;
}td {
    word-break: break-all;
}
</style><body><table id="tbl_Show" border="1" cellspacing="0"></table>
</body>
</html><script language="JavaScript">
<!--
//定义xmlHttp
var xmlHttp;//定义接收数组
var _arr = new Array();/*
 * 生成xmlHttp
 */
function createXMLHttpRequest() {
    if (window.ActiveXObject) {
        try {
            //使用IE 6.0以上的版本
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e1) {
            //使用IE 5.5以下的版本
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
    }
    else if (window.XMLHttpRequest) {
        //使用FireFox等其他浏览器
        xmlHttp = new XMLHttpRequest();
    }
}/*
 * 从给定地址中取出所需内容
 */
function getContent() {
    //初始化xmlHttp
    createXMLHttpRequest();    if (xmlHttp) {
        //定义xml路径
        var _xmlUrl = "http://202.108.11.89:8088/cpro/ui/uijs.php?i=1717986918&p=baidu&q=baidu_test_cpr&n=3&c=news&k=%CF%CA%BB%A8.%C0%F1%CE%EF&u=www.baidu.com/info.html&s=1";        //数据读取
        xmlHttp.open("GET", _xmlUrl, false);
        xmlHttp.send();        //取得结果
        var _xml = xmlHttp.responseXML;        //得到节点内容
        var _nodes = _xml.documentElement.childNodes;        //得到所需节点内容
        var _nodeAds = _nodes[2].childNodes;        //循环取得预设值
        for (var i = 0; i < _nodeAds.length; i++) {
            //取得单条广告内容
            var _ad = _nodeAds[i].childNodes;            //建立临时数组,储存各项记录
            var _arrTmp = new Array();            //存储标题
            _arrTmp[0] = _ad[2].text;
            //存储描述
            _arrTmp[1] = _ad[3].text;
            //存储显示网址
            _arrTmp[2] = _ad[4].text;
            //存储链接网址
            _arrTmp[3] = _ad[5].text;            //写入全局变量
            _arr[i] = _arrTmp;
        }
    }
}/*
 * 测试所读数据内容
 */
function testArr() {
    var _tbl = document.getElementById("tbl_Show");    for (var i = 0; i < _arr.length; i++) {
        var _tr = _tbl.insertRow(_tbl.rows.length);        var _arrTmp = _arr[i];        for (var j = 0; j < _arrTmp.length; j++) {
            var _td = document.createElement("td");            _td.innerHTML = _arrTmp[j];
            _tr.appendChild(_td);
        }
    }
}//调用读数据过程
getContent();//测试数据
testArr();
//-->
</script>

解决方案 »

  1.   

    没有人知道吗?在C#中通过http语句调用结果返回的xml字符串,并用正则表达式读到字符串数组中的例子如下: System.IO.Stream s = null;
    StreamReader sr = null;
    try
    {
    string strURL = http://cpro.baidu.com/cpro/ui/uijs.php?i=3673458753&p=fundabc&q=fundabc_cpr&n=15&c=news&t=baiduCPROXMLSimple&u=www.honpher.cn&s=1"; 
    System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
    System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
    s = response.GetResponseStream();
    sr = new StreamReader(s, System.Text.Encoding.GetEncoding("GB2312"));
    string str = sr.ReadToEnd(); Regex re = new Regex(@"<title>(?<text>\S*)</title>\n<curl>(?<url>\S*)</curl>", RegexOptions.Compiled);

    ArrayList al = new ArrayList();
    for( Match m = re.Match(str); m.Success; m = m.NextMatch() ) 
    {
    try
    {
    TextAd ad = new TextAd();
    ad.Title = m.Groups["text"].ToString();
    ad.Url = m.Groups["url"].ToString();
    al.Add(ad);
    }
    catch{}
    }
    // 字符串建立代码
    }
    catch{}
    finally
    {
    if (sr!=null)
    sr.Close();
    if (s!=null)
    s.Close();
    }
      

  2.   

    我试了,非常好。非常感谢。能否帮忙把刚才前面那个贴子中的内容与这个结合起来,就是:1、调用http命令,返回xml字符串;
    2、将xml字符串读取字符串数组;
    3、将字符串数组显示到特定格式的htm网页上,像下图中那样。
    就是把两部分合起来,因为我的js能力完全菜鸟,把两部分合起来都是问题。谢谢了。
      

  3.   

    非常感谢!!!能否帮忙把刚才前面那个贴子中的内容与这个结合起来,就是: 1、调用http命令,返回xml字符串; 
    2、将xml字符串读取字符串数组; 
    3、将字符串数组显示到特定格式的htm网页上,像下图中那样。  就是把两部分合起来,因为我的js能力完全菜鸟,把两部分合起来都是问题。谢谢了。
      

  4.   

    还是那句话,在firefox下不能运行:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title> New Document </title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="Generator" content="EditPlus">
    <meta name="Author" content="kind">
    <meta name="Keywords" content="">
    <meta name="Description" content="">
    </head><style>
    table.ads {
        border: 1px silver solid;
        background-color: white;
    }td.link {
        vertical-align: top;
        cursor: pointer;
    }font.title {
        font-weight: bold;
        font-size: 13px;
        font-family: "宋体";
        color: #3388FF;
        text-decoration: underline;
    }font.content {
        font-size: 12px;
        color: black;
    }font.link {
        font-size: 11px;
        color: green;
    }
    </style><body onload="addAds()"><table id="tbl_Ads"></table></body>
    </html><script language="JavaScript">
    <!--
    //设置变量组
    var _vars = {
        //广告部分所用数组
        ads: new Array(),
        //定义xmlHttp
        xmlHttp: null
    };/*
     * 生成xmlHttp
     */
    function createXMLHttpRequest() {
        if (window.ActiveXObject) {
            try {
                //使用IE 6.0以上的版本
                _vars.xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e1) {
                //使用IE 5.5以下的版本
                _vars.xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
            }
        }
        else if (window.XMLHttpRequest) {
            //使用FireFox等其他浏览器
            _vars.xmlHttp = new XMLHttpRequest();
        }
    }/*
     * 从给定地址中取出所需内容
     */
    function getContent() {
        //初始化xmlHttp
        createXMLHttpRequest();    if (_vars.xmlHttp) {
            //定义xml路径
            var _xmlUrl = "http://202.108.11.89:8088/cpro/ui/uijs.php?i=1717986918&p=baidu&q=baidu_test_cpr&n=3&c=news&k=%CF%CA%BB%A8.%C0%F1%CE%EF&u=www.baidu.com/info.html&s=1";        //数据读取
            _vars.xmlHttp.open("GET", _xmlUrl, false);
            _vars.xmlHttp.send();        //取得结果
            var _xml = _vars.xmlHttp.responseXML;        //得到节点内容
            var _nodes = _xml.documentElement.childNodes;        //得到所需节点内容
            var _nodeAds = _nodes[2].childNodes;        //循环取得预设值
            for (var i = 0; i < _nodeAds.length; i++) {
                //取得单条广告内容
                var _ad = _nodeAds[i].childNodes;            //建立临时数组,储存各项记录
                var _arrTmp = new Array();            //存储标题
                _arrTmp[0] = _ad[2].text;
                //存储描述
                _arrTmp[1] = _ad[3].text;
                //存储显示网址
                _arrTmp[2] = _ad[4].text;
                //存储链接网址
                _arrTmp[3] = _ad[5].text;            //写入全局变量
                _vars.ads[i] = _arrTmp;
            }
        }
    }/*
     * 页面载入时处理
     */
    function addAds() {
        initTblAds();
        getContent();
        insAds();
    }/*
     * 初期化表格
     */
    function initTblAds() {
        var _tbl = document.getElementById("tbl_Ads");
        _tbl.className = "ads";
        _tbl.width = "730px";
        _tbl.height = "90px";
    }/*
     * 链接指定地址
     */
    function linkUrl(obj) {
        var _num = obj.linkNum;
        window.open(_vars.ads[_num][3]);
    }/*
     * 填充表格
     */
    function insAds() {
        //计算单元格宽度
        var _tbl = document.getElementById("tbl_Ads");
        var _width = _tbl.width / 3;    //建立一行tr至表格
        var _tr = _tbl.insertRow(0);
        //var _linkUrl = new Array(_vars.ads[0][3], _vars.ads[1][3], _vars.ads[2][3]);
        //alert(_linkUrl.length);    for (var i = 0; i < 3; i++) {
            //建立单元格,设置风格
            var _td = document.createElement("td");
            _td.style.width = _width;
            _td.className = "link";        //设置单元格的点击事件
            _td.linkNum = i + "";
            _td.onclick = function() {linkUrl(this)};        //填充标题部分,设置css
            var _txt1 = document.createElement("font");
            _txt1.innerHTML = _cut.title(_vars.ads[i][0]);
            _txt1.className = "title";        //填充文本部分,设置css
            var _txt2 = document.createElement("font");
            _txt2.innerHTML = _cut.txt(_vars.ads[i][1]);
            _txt2.className = "content";        //填充链接部分,设置css
            var _txt3 = document.createElement("font");
            _txt3.innerHTML = _vars.ads[i][2];
            _txt3.className = "link";        //填充内容至单元格
            _td.appendChild(_txt1);
            _td.appendChild(document.createElement("br"));
            _td.appendChild(_txt2);
            _td.appendChild(document.createElement("br"));
            _td.appendChild(_txt3);        //最后设置tr内容
            _tr.appendChild(_td);
        }
    }//设置剪切方法
    var _cut = {
        //剪切标题部分
        title: function(_word) {
            return _cut.cnt(_word, 16, false);
        },
        //剪切文本部分
        txt: function(_word) {
            return _cut.cnt(_word, 39, true);
        },
        //剪切方法
        cnt: function(_word, _len, flgAddDot) {
            var _l = 0;
            var _w = "";        //计算单字节及双字节长度,根据指定长度剪切
            for (var i = 0; i < _word.length; i++) {
                if (_word.charCodeAt(i) > 255) {
                    //汉字为双字节
                    _l += 2;
                }
                else {
                    _l++;
                }            if (_l > _len * 2) {
                    if (flgAddDot) {
                        _w += "..";
                    }
                    break;
                }
                else {
                    //取得相应长度的文字
                    _w += _word.charAt(i);
                }
            }        return _w;
        }
    };
    //-->
    </script>
      

  5.   

    把 var _width = _tbl.width / 3 改成 var _width = _tbl.width / 3 - 5;然后在        //最后设置tr内容
            _tr.appendChild(_td);
    这两行后面增加如下代码:
            //增加空域
            var _space = document.createElement("td");
            _space.style.width = 5;
            _space.innerHTML = "&nbsp;";
            _tr.appendChild(_space);