public List<Data> GetDataList(int count)
    {
        List<Data> data = new List<Data>();
        for (int i = 0; i < count; i++)
        {
            data.Add(new Data
            {
                TopID=i,
                UserID=i*10,
                Img = "Image/me.jpg",
                Name = "姓名" + i.ToString(),
                content = "中草药虐待虽则上台阶开工字斟句酌",
                Time = DateTime.Now.AddDays(1).ToString()
            });
        }
        return data;
    }[WebMethod]
    public string GetXmlData(int count)
    {
        List<Data> data = this.GetDataList(count);
        XElement xmlData = new XElement("Root");
        foreach (Data item in data)
        {
            XElement ele = new XElement(
                new XElement("Info",
                    new XElement("Img", item.Img),
                    new XElement("Name", item.Name),
                    new XElement("Content", item.content),
                    new XElement("Time", item.Time)
                    ));
            xmlData.Add(ele);
        }
        return xmlData.ToString();
    }function GetDataFromServices() {
            $.ajax({
                type: "POST",
                url: "MyWebService.asmx/GetXmlData",
                data: { count: 5 },
                dataType: "text/xml",
                success: function(data) {
                    alert(data);
                },
                error: function(msg) { alert(msg); }
            });
        }
返回的结果请看为什么什么这样?

解决方案 »

  1.   

    不是乱码,是进行XMlENcode编码了。
      

  2.   

    自己写个XmlDecodehttp://dracoblue.net/dev/encodedecode-special-xml-characters-in-javascript/155/
      

  3.   

    functiom xmlDecode(s)
    {
     return s.replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,"\"")..replace(/&amp;/g,"&")
    }
      

  4.   


    如果使用serverPage,设置Response.ContentType = "text/xml";
    就不会有<string xmlns="http://tempuri.org/"></string>这个东西了
    为什么WebServies就会有呢?
    一般返回XML都用serverPage来做的吗?
      

  5.   

    还有,为什么会进行XMlENcode吗?不明白其中原理!
      

  6.   

    MyWebService.asmx/GetXmlData
    本身返回的是xml格式,你的数据也是xml,所以必须进行编码,否则,就不放符合xml的格式要求了
      

  7.   

    注意,最外层的<string xmlns="xxx"></string>是个放置返回内容的容器,你的内容是xml格式的,所以要进行编码
      

  8.   

    可以用htmldecode< 和 > 因为是html里面的标记符号,直接显示会有问题,所以从webservice里面拿到数据后,做了htmlencode再做一下htmldecode就可以了
    可以用 HttpUtility.HtmlDecode()来试试
      

  9.   

    那这样还不如用aspx返回XML好!
      

  10.   

    用jquery拿到数据 怎么可能HttpUtility.HtmlDecode()呢?
      

  11.   

    在ajax 里面用webservice 就这样,webservice  本来就是xml,xml 里面签入xml 就要进行编码了,否则传递不过来。你不需要用webservice 来传递这个xml给ajax,直接用ashx 页面就得了。
      

  12.   

    嗯,webservice的调用确实存在这个问题,直接用aspx返回就不会有这个问题sorry, 没注意到时jquery拿到数据,用jquery 有人用下面的方法做hmlencode 和decodefunction htmlEncode(value){  
      return $('<div/>').text(value).html();  
    }  
     
    function htmlDecode(value){  
      return $('<div/>').html(value).text();