js获取后台map格式数据
后台:
@RequestMapping("/dictList") @ResponseBody public Map<String, Object> positionList() { Map<String, Object> params = new HashMap<String, Object>(); List<SysDictBean> status = sysDictService.findByType("foreign_status"); //查询系统参数的货币对 List<SysDictBean> side = sysDictService.findByType("side_type"); //查询交易类型 params.put("status", status); params.put("side", side); return params; }
js:
function getDict(){ $.ajax({ type: "POST", url:'/dictList', data:{}, async: false, success: function(data) { var json = eval("(" + JSON.stringify(data) + ")"); //也可以这样写:var json = JSON.parse(JSON.stringify(data)); // dictSide = JSON.stringify(json.side); // //console.log(dictSide) // for (var t = 0; t < json.side.length; t++) { // if (json.side[t].value == 1) { // var aa = json.side[t].name; // alert(aa) // } // } dictSide = json.side; dictStatus = json.status; } }); }
eval()把对应的字符串解析成JS代码并运行。
为什么eval("("+data+")")函数内部要添加括号呢
由于json是以{}的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。