现在使用jQuery $.getJSON 来调用WebService,WebService返回json字符串。但在返回后不知怎么处理了。
前台html部分:<script type="text/javascript">
        //省
        function ProvinceBind() {
            //清空
            $("#Province").empty();
            $("#Province").append("<option selected value=\"\">请选择...</option>");
            var oSheng = $("#Province");
            $.getJSON(
                "AreaService.asmx/GetProvince",
                function(json) {
                    $.each(json, function(i) {
                        $("#Province").append("<option  value=\"" + json[i].Code + "\">" + json[i].Name + "</option>");
                    });
                }
            );
        }
        
        $(document).ready(function() {
            ProvinceBind();
        });
    </script><select id="Province" name="Province">
            <option value="">请选择...</option>
        </select>
WebService部分:[WebMethod]
        public string GetProvince()
        {
            StringBuilder sb = new StringBuilder();
            DataSet ds = new ChinaBond.BLL.T_Province().GetProvinceList("");
            if (ds == null || ds.Tables[0].Rows.Count == 0)
                return "";            sb.Append("[");
            int i = 0;
            foreach (DataRow item in ds.Tables[0].Rows)
            {
                string temp = "{";
                temp += string.Format("Code:\"{0}\",Name:\"{1}\"", item["Code"].ToString().Trim(), item["Name"].ToString().Trim());
                temp += "}";
                if ((++i) < ds.Tables[0].Rows.Count)
                    temp += ",";
                sb.Append(temp);
            }
            if (ds.Tables[0].Rows.Count > 0)
                sb.Append("]");            return sb.ToString();
        }
用FireBug看到的返回信息:<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">[{Code:"110000",Name:"北京市"},{Code:"120000",Name:"天津市"},{Code:"130000",Name:"河北省"},{Code:"140000",Name:"山西省"},{Code:"150000",Name:"内蒙古"},{Code:"210000",Name:"辽宁省"},{Code:"220000",Name:"吉林省"},{Code:"230000",Name:"黑龙江"},{Code:"310000",Name:"上海市"},{Code:"320000",Name:"江苏省"},{Code:"330000",Name:"浙江省"},{Code:"340000",Name:"安徽省"},{Code:"350000",Name:"福建省"},{Code:"360000",Name:"江西省"},{Code:"370000",Name:"山东省"},{Code:"410000",Name:"河南省"},{Code:"420000",Name:"湖北省"},{Code:"430000",Name:"湖南省"},{Code:"440000",Name:"广东省"},{Code:"450000",Name:"广西省"},{Code:"460000",Name:"海南省"},{Code:"500000",Name:"重庆市"},{Code:"510000",Name:"四川省"},{Code:"520000",Name:"贵州省"},{Code:"530000",Name:"云南省"},{Code:"540000",Name:"西  藏"},{Code:"610000",Name:"陕西省"},{Code:"620000",Name:"甘肃省"},{Code:"630000",Name:"青海省"},{Code:"640000",Name:"宁  夏"},{Code:"650000",Name:"新  疆"},{Code:"710000",Name:"台湾省"},{Code:"810000",Name:"香  港"},{Code:"820000",Name:"澳  门"}]</string>
怎么在前台写js才可以处理返回的字符串呢?

解决方案 »

  1.   

    我记得应该是d.JsonObj看你的WebService返回的是什么?如果是可被序列化的对象那么可以序列化为JSON对象直接发送到客户端,如果是返回的XML则需要你在收到这个XML的时候自己解析XML。如果是已经序列化为JSON对象你可以尝试使用下面的方法:
    var obj = evel(result).d;
    获得这个对象。
      

  2.   

    看楼主应该是返回的一个XML。参考下面链接解析XML:http://www.w3schools.com/xml/xml_examples.asp
      

  3.   

    都没说到点子上。
    WebService里面自定义的json。
    不能用return 
    要用responsereturn sb.ToString();
    改成:
    this.Response.Write(sb.ToString());
      

  4.   

    type: 'post',
     dataType: 'json',var a= new Object();
     $.post("Test.ashx", "uname=" + JSON.stringify(a), function(result) {
      alert($(result).find("Message").text());
      });post方式就用
    string name = context.Request.Form["uname"]; 
    http://topic.csdn.net/u/20091029/18/1d64c2e7-8dda-42da-aeab-576c2a817797.html
      

  5.   

    使用 ashx来处理请求时用的是context.Response.Write(".........");用firebug看返回的信息是[{Code:"110000",Name:"北京市"},{Code:"120000",Name:"天津市"},{Code:"130000",Name:"河北省"},{Code:"140000",Name:"山西省"},{Code:"150000",Name:"内蒙古"},{Code:"210000",Name:"辽宁省"},{Code:"220000",Name:"吉林省"},{Code:"230000",Name:"黑龙江"},{Code:"310000",Name:"上海市"},{Code:"320000",Name:"江苏省"},{Code:"330000",Name:"浙江省"},{Code:"340000",Name:"安徽省"},{Code:"350000",Name:"福建省"},{Code:"360000",Name:"江西省"},{Code:"370000",Name:"山东省"},{Code:"410000",Name:"河南省"},{Code:"420000",Name:"湖北省"},{Code:"430000",Name:"湖南省"},{Code:"440000",Name:"广东省"},{Code:"450000",Name:"广西省"},{Code:"460000",Name:"海南省"},{Code:"500000",Name:"重庆市"},{Code:"510000",Name:"四川省"},{Code:"520000",Name:"贵州省"},{Code:"530000",Name:"云南省"},{Code:"540000",Name:"西  藏"},{Code:"610000",Name:"陕西省"},{Code:"620000",Name:"甘肃省"},{Code:"630000",Name:"青海省"},{Code:"640000",Name:"宁  夏"},{Code:"650000",Name:"新  疆"},{Code:"710000",Name:"台湾省"},{Code:"810000",Name:"香  港"},{Code:"820000",Name:"澳  门"}]这个在前台用jQuery来解析时使用function ProvinceBind() {
                //清空
                $("#Province").empty();
                $("#Province").append("<option selected value=\"\">请选择...</option>");
                var oSheng = $("#Province");
                $.getJSON(
                    "ProvinceHandler.ashx",
                    function(json) {
                        $.each(json, function(i) {
                            $("#Province").append("<option  value=\"" + json[i].Code + "\">" + json[i].Name + "</option>");
                        });
                    }
                );
            }这样是正确的,在select控件中可以把数据绑定上。
    现在问题是我想用WebService来实现数据的返回。