后台返回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+")") ;

时间: 2024-08-05 11:18:38

后台返回JSON前台获取循环解析的相关文章

iOS:后台返回json数据格式错误无法解析

场景:MK网络请求,后台返回有数据,但是因为json数据中某些字段有换行符无法解析,即json格式错误,如果后台不给转码,就需要自己解决,\r\n是ASCII码表中的换行符,将这些字段忽略掉基本就没有问题了 NSString *resultString = [self responseString];//self为网络请求操作类(completedOperation) NSData *data = [[resultString stringByReplacingOccurrencesOfStri

spring boot 解决后台返回 json 到前台中文乱码之后出现返回json数据报错 500:no convertter for return value of type

问题描述 spring Boot 中文返回给浏览器乱码 解析成问号?? fastJson jackJson spring boot 新增配置解决后台返回 json 到前台中文乱码之后,出现返回json数据报错:no convertter for return value of type 注释掉解决中文乱码的问题之后返回对象json正常 Failed to write HTTP message: org.springframework.http.converter.HttpMessageNotWr

java之后台返回json格式字符串,前台接受并转为json文件

作为一个菜鸟,做项目真的好困难呀,这两天被一个问题困了两天,终于解决了,但是也不算太完美.首先,先说一下问题吧,根据后台返回的值,前台接受并作出一个折线图. 最初,在后台根据从数据库中的值,强制拼成了json格式的字符串,利用model返回给前台,前台Ajax  success:function(data)data接收数据,这是应该接收的是字符串,由于折线图中series中的data为非字符串,(这个是后来百度才知道的),就没有成功.然后就想后台直接将数据转换成json,然后返回前台,利用里JS

EasyUI前台执行删除功能后台返回给前台信息 删除成功/删除失败+错误信息

新建一个类 1 public class JsonResult { 2 private Boolean success = true; 3 private String msg; 4 5 public JsonResult() { 6 } 7 8 public JsonResult(Boolean success, String msg) { 9 this.success = success; 10 this.msg = msg; 11 } 12 ...get/set 13 } Controll

HttpServletResponse工具类和HttpServletRequest工具类,前台参数接收方式和后台返回(JSON)数据格式

RequestUtils.java 操作类 package cn.utils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.util.UrlPathHelper; import javax.servlet.http.HttpServletRequest; import java

jquery ajax 从后台返回json结果后 不执行success方法的问题

大家在开发的过程中都会经常使用异步方式与后台进行交互,从后台往前台返回的结果信息常常用json字符串的格式,如果在后台拼的返回结果串(json)如果有问题(json格式不对).ajax前端的js代码将直接调用error中的方法,此时是不会走success方法的.这里大家可以去网上找个json在线验证的网站看下自己的json串是否正确,如果是用json工具包生成的json串是没有问题的.

后台返回json字符串 页面js报错 Uncaught SyntaxError: Unexpected identifier

后台json字符串是 [{"name": "报销申请", "id": "start"}, {"name": "部门经理审批", "id": "departAudit"}, {"name": "总经理审批", "id": "bossAudit"}, {"name

springmvc,通过ajax方式提交页面数据,后台返回json数据中文信息乱码

本人刚开始接触springmvc,项目搭建参照https://my.oschina.net/gaussik/blog/385697.在用IDEA写登录注册的时候,想通过ajax方式提交数据到后台,然后遇到如题所述的乱码问题,然后度娘了好多,终于解决了.废话不多说,直接上代码. 首先是登录页面login.jsp 1 <%-- 2 Created by IntelliJ IDEA. 3 User: PENG027 4 Date: 2016/11/11 5 Time: 15:48 6 To chang

struts2后台返回json到jsp页面

1.在action定义一个全局变量如: private Map<String, Object> dataMap; 2.控制层方法 说明:主要的目的是把我们定义的Map转为Json对象,然后输出到前台    public String valiDateCode(){        HttpServletRequest request = ServletActionContext.getRequest();        HttpSession session = request.getSessi