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)来执行。

posted @ 2020-01-13 10:56  寒冰射手(电脑)  阅读(6063)  评论(0编辑  收藏  举报