jquery调用后台方法返回json数据的处理

利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法。但往往从后台返回的json字符串不能够正确解析,究其原因,是因为没有对返回的json数据做进一步的加工。其实,这里只需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次即可,这种方式也适合以普通javascipt方式获取json对象,以下举例说明:
$.ajax({
        type: "POST",
        url: "json_post.aspx/getdata",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        success: function (data) {
                var dataobj = eval("(" + data.d + ")"); //转换为json对象
                alert(dataobj.root.length); //输出root的子对象数量 
                $.each(dataobj.root, function (i, item) {
                      alert("name:" + item.name + ",value:" + item.value);
                })
        }
});

后台方法:

   [WebMethod]
        public static string getdata()
        {
            StringBuilder str=new StringBuilder();
            str.Append("{root: [{name:'6101',value:'北京市'}, {name:'6102',value:'天津市'}, {name:'6103',value:'上海市'}, ");
            str.Append("{name:'6104',value:'重庆市'}, {name:'6105',value:'渭南市'}, {name:'6106',value:'延安市'}, {name:'6107',value:'汉中市'}, ");
            str.Append("{name:'6108',value:'榆林市'}, {name:'6109',value:'安康市'}, {name:'6110',value:'商洛市'}]}");
            return str.ToString();
        } 

注意:1.需导入命名空间 using System.Web.Services;

        2.方法一定要静态方法,而且要有[WebMethod]的声明。

小结:

从服务器来的是json数组,如[{id:1,name:"小子"},{id:2,name:"大子"}] 在客户端需要用eval("("+json数组对象+")")处理一次,这样就可以把从服务器来的json数据转成javascript的json。

vs2005

如:单个json对象 var data=eval(data.d);
如:数组json对象 var data=eval("("+data.d+")") ;

注:vs2008一定要加.d才能正常将jquery的json转成javascript的json对象
如:单个json对象 var data=eval(data.d);
如:数组json对象 var data=eval("("+data.d+")") ;

转载于:https://www.cnblogs.com/jaywoo/archive/2011/06/12/2078772.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值