链接地址:http://jipiao1.lezhu.org.cn/data/flightline.asp?top=10&orgcityid=53事实上这是一个不太正式的接口,我主要是想获取里面返回的xml数据,但是试了很多种方法都没成功,原因是我不知道问题出在那里。下面说一下我都用了什么方法:
1.function getComTickets(myxml,rows,orgcityid)                   
{
    var my_new_url = xmlurl2 + "?top="+rows+"&orgcityid="+orgcityid+"&time="+new Date().toLocaleTimeString();
    var xmlHttp = new RXmlHttpRequest().get();
//    try{
//        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
//    }catch(e){alert("调用失败!请更换浏览器重新调用!");}    xmlHttp.open("get",my_new_url,false);
    xmlHttp.send(null);
    debugger;
    xmlHttp.onreadystatechange = function(){
            if(xmlHttp.readyState == 4 || xmlHttp.readyState == 'complete'){
                if(xmlHttp.status == 200){
                
                    if(xmlHttp.responseText != "")
                    {
                        var xmlDom = XmlDom();
                        xmlDom.async = 'false';
                        xmlDom.loadXML(xmlHttp.responseText);
                        var xml = xmlDom.documentElement;
                        //var items = xml.getElementsByTagName("flightline/line");
                        var items = xmlDom.selectNodes("flightline/line");
                        var html_l = new StringBuilder();
                        var html_r = new StringBuilder();
                        html_l.append("<tr>");
                        html_r.append("<tr>");
                        for(var i = 0; i<items.length;i++)
                        {
                        //alert(i+" "+xmlDom.selectSingleNode("flightline/line["+i+"]/qrydate").text);
                            if(i < 5)
                            {
//                                   html_l.append("<td>"+xml[i].getElementsByTagName("qrydate").childNodes[0].nodeValue+"</td>"); 
//                                   html_l.append("<td>"+xml[i].getElementsByTagName("orgcityname").childNodes[0].nodeValue+"-"+xml[i].getElementsByTagName("descityname").childNodes[0].nodeValue+"</td>"); 
//                                   html_l.append("<td>"+xml[i].getElementsByTagName("lowesttcprice").childNodes[0].nodeValue+"</td>"); 
                                html_l.append("<td>"+xmlDom.selectSingleNode("flightline/line["+i+"]/qrydate").text+"</td>");
                                html_l.append("<td>"+xmlDom.selectSingleNode("flightline/line["+i+"]/orgcityname").text+"-"+xmlDom.selectSingleNode("flightline/line["+i+"]/descityname").text+"</td>");
                                html_l.append("<td>"+xmlDom.selectSingleNode("flightline/line["+i+"]/lowesttcprice").text+"</td>");
                            }
                            else
                            {
                                html_r.append("<td>"+xmlDom.selectSingleNode("flightline/line["+i+"]/qrydate").text+"</td>");
                                html_r.append("<td>"+xmlDom.selectSingleNode("flightline/line["+i+"]/orgcityname").text+"-"+xmlDom.selectSingleNode("flightline/line["+i+"]/descityname").text+"</td>");
                                html_r.append("<td>"+xmlDom.selectSingleNode("flightline/line["+i+"]/lowesttcprice").text+"</td>");
                            }
                        }
                        //alert(html_l.toString("")+html_r.toString(""));
                        document.getElementByID("city_53").innerHtml = html_l.toString("")+html_r.toString("");
                    }
                    window.status = "完毕!";
                }else{
                    window.status = "数据加载失败!";
                }
            }else{
                window.status = "请求中...";
            }
        }
}function getComHtml()
{
    var xmlDom = new XmlDom();
    xmlDom.async = "false";
    //xmlDom.resolveExternals = "false";
    //xmlDom.setProperty("ServerHTTPRequest",true);
    var ulr ="http://jipiao1.lezhu.org.cn/data/flightline.asp?top=10&orgcityid=53&time="+new Date().toLocaleTimeString();
    xmlDom.load(ulr);
    var items = xmlDom.selectNodes("flightline/line");
    var html_l = new StringBuilder();
    var html_r = new StringBuilder();
    for(var i=0;i<items.length;i++)
    {
        if(i < 5)
        {
            html_l.append("<td>"+items(i).selectSingleNode("qrydate").Text+"</td>");
        }
        else
        {
           html_r.append("<td>"+items(i).selectSingleNode("qrydate").Text+"</td>");
        }
    }
    alert(html_l.toString()+html_r.toString());
}function XmlDom()
{
    if(window.ActiveXObject)
    {
        var arrSignatures = ["MSXML2.DOMDocument.5.0","MSXML.DOMDocument.4.0","MSXML.DOMDocument.3.0","MSXML.DOMDocument","Microsoft.XmlDom"];
        for(var i =0;i<arrSignatures.length;i++)
        {
            try{
                var oXmlDom = new ActiveXObject(arrSignatures[i]);
                return oXmlDom;
            }catch(oError)
            {
                
            }
        }
        
        throw new Error("您的系统并不支持MSXML!");
    }
    else if(document.implementation && document.implementation.createDocument)
    {
        var xmlDom = document.implementation.createDocument("","",null);
        return xmlDom;
    }
    else
    {
        throw new Error("您的浏览器并不支持 XmlDom 对象!");
    }
}function StringBuilder()
{
    this._stringArray = new Array();
}
StringBuilder.prototype.append = function(str)
{
 this._stringArray.push(str);
}StringBuilder.prototype.toString = function(joinGap)
{
    return this._stringArray.join(joinGap);
}
2.跟上面代码大多一样,只不过xmldom对象使用load的方法的时候直接把url当参数,略过。
3.后台获取
StringBuilder sbXml = new StringBuilder();
        Context.Response.ClearContent();
        Context.Response.ContentType = "text/xml";
        using (XmlTextReader xr = new XmlTextReader("http://jipiao1.lezhu.org.cn/data/flightline.asp?top=" + top + "&orgcityid=" + orgcityid))
        {
            while (xr.Read())
            {
                sbXml.Append(xr.ReadInnerXml());
            }
        }
        Context.Response.Write(sbXml.ToString());
        Context.Response.End();第一种,IE获取内容为空,第二种ff里面报组件返回错误代码0x80004005等等,第三种后台获取的内容为空报错。
总之一句话,什么结果都没有,对js的不太熟悉,让我此时不知道从哪儿下手了,各位大侠不吝赐教吧!在下除了感谢敬佩外只剩下实实在在的分了。

解决方案 »

  1.   

    我读到xmldocument的写法,然后操作xmldocument
            private XmlDocument GetXml(string http)
            {
                string url = http;
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
                HttpWebResponse res = (HttpWebResponse)req.GetResponse();
                XmlDocument doc = new XmlDocument();
                doc.Load(res.GetResponseStream());
                return doc;        }
      

  2.   

    这个方法和我第三个方法一样,报这个错误:意外的 XML 声明。XML 声明必须是文档中的第一个节点并且在它之前不允许出现空白字符。 行 3,位置 3。
      

  3.   

    其实刚开始的时候我也想过用javascript webservice和asp.net webservice但是这方面接触的少,且这个地址不是wsdl的,所以看到这个地址就放弃了
      

  4.   

    那是因为http://jipiao1.lezhu.org.cn/data/flightline.asp?top=10&orgcityid=53
    你这里的内容格式不是text/xml
    你自己看下。你的是text/html
    所以出现了空白什么的。。
      

  5.   

    XML格式有问题,不按xml读又很难操作吧
      

  6.   

    不是跟你说了、。你的远程xml个内容格式问题。你没看吗你xml ContentType  是text/html 
    应该改成text/xml 就可以了
      

  7.   

    方法很简单,日然是一个WS的接口 返回的数据,那么你可以通过这种方法来取:
    function RemoveFans(FansId) {
        $.jmsajax({
            url: window.UserServiceUrl,//WS接口地址
            method: "RemoveFans",//接口提供的方法
            data: {
            'FansId': FansId//参数名
            },
            success: function(count) {//count就是执行成功后返回的数据            if (count == 0) {
                    alert("0: 操作失败,未知错误");
                }
                if (count == 1) {
                    alert("1:操作成功 ");
                    LoadData();
                }
                if (count == 2) {
                    alert("2:操作失败, 两个用户不存在关注关系,不能操作");
                }
            }    })
    }
    不过通过JQUERY 取得的数据时JSON 和LIST形式的!
      

  8.   

    这个是不是返回JSON数据格式好处理呢