Ajax注意事项:将后台Map、List、String的数据转为JSON注意事项

当通过Ajax后台往前台传值时注意事项

先判断是否是String类型,如果是String类型就转JSON

$('#edit').form('submit', {
   	url:url,
	success:function(data){
	//转返回数据转为JSON
	  if(typeof data === 'string'){
	       data = JSON.parse(data);
	}
}

当后台传入不规范数据时无法正常转换为JSON

前台Ajax处理代码

success: function(data) {
            f(typeof data === 'string'){
           	 //后台返回List对象所以这里无法转进来
	      		 data = JSON.parse(data);
			}
			
            	//console.debug()
            	data[0].name;//admin1
            	data[0].data;// [11.0, 0.0]
        		
        		//data[0].data[0];       //出错这里data并不是数组他只是一个字符串
				var jsonData = JSON.parse(data[0].data);
				jsonData[0];//11
            
           
        }

后台Controller代码

1、返回的是一个List对象,到前台会自动解析成JSON对象,所以前台不能

2、List中存入Mapt对象,到前台也会自动解析成JSON对象

3、注意:(series1 、series2)中存放的data是字符串类型并不是List对象类型;所以到前台是不会自动转成JSON对象

	@RequestMapping("/charts")
    @ResponseBody
    public List  charts(){
        //数据data
        List list= new ArrayList();
        
        Map series1 = new HashMap();
        series1.put("name","admin1");
        series1.put("data", "[11.0, 0.0]");
        
        Map series2 = new HashMap();
        series2.put("name","admin2");
        series2.put("data","[3.0, 21.5]");

        list.add(series1);
        list.add(series2);
        
        return list;
    }
## 当后台传入不规范数据时无法正常转换为JSON(一下方式会造成很多意外不建议这里使用)
### 前台Ajax处理代码

success: function(data) {
f(typeof data === ‘string’){
data = JSON.parse(data);
}
for (var i=0;i chart.series[i].setData(JSON.parse(data.series[i].data));
chart.legend.allItems[i].setName(data.series[i].name);
}

        chart.legend.update()
    }
### 后台Controller代码
1、返回的是一个Map对象,到前台会自动解析成JSON对象,所以前台不能

2、map中存入categories是List对象,到前台也会自动解析成JSON对象
3、map中存入series是List对象,到前台也对自动解析成JSON对象

4、List(seriesList )也是对象也,到前台也会自动解析
5、Map (series1 、series2)也是对象,到前台也会自动解析

6、注意:(series1 、series2)中存放的data:“[11.0, 0.0]”是字符串类型并不是List对象类型;所以到前台是不会自动转成JSON对象,所以JSON.parse(data.series[i].data) 是可以吧字符串转为JSON的
@RequestMapping("/charts")
@ResponseBody
public Map charts(){
    Map map = new HashMap<>();
    //X轴
    List categories = new ArrayList<>();
    categories.add("2015-04");
    categories.add("2018-06");
    map.put("categories",categories);
   
    //数据data
    Map series1 = new HashMap();
    series1.put("name","admin1");
    series1.put("data", "[11.0, 0.0]");
    Map series2 = new HashMap();
    series2.put("name","admin2");
    series2.put("data","[3.0, 21.5]");

    List seriesList = new ArrayList();
    seriesList.add(series1);
    seriesList.add(series2);
    map.put("series",seriesList);
    return map;
}

你可能感兴趣的:(规范注意事项)