1、问题概述?
eval()在javaScript中被用于将JSON数组转化成数组,但是在有一些代码平台质量管控中,会提示如下错误信息:
禁用eval()
JavaScript中的eval()函数是有潜在危险,而且经常被误用。在不可信的代码里使用eval()有可能使程序受到不同的注入攻击。
2、如何替代eval()
替代方案方案非常多,介绍使用jQuery的方式替代eval()
【后端返回值】
后端可采用@ResponseBody将对象转化成json字符串。
[
{"name":"晓春","sex":"男","age":"30","address":"安徽合肥","password":"123456"},
{"name":"十一郎","sex":"男","address":"安徽合肥","password":"123456"},
]
2.1、原有的eval()方案
提示:eval()是一个危险的函数,它使用与调用者相同的执行权限......
$.ajax({
type:"get",
url:"/test"
cache:false,
dataType:"text",
success:function(data){
var result = eval(data);
for(var i=0;i<result.length;i++){
console.log(result[i].name);
}
}
});
2.2、jQuery的$.each替代方案
替代方案中使用了jQuery的each循环替代了原有的eval用法
定义数组的时候建议使用如下方式:
var result=[];否则会提示:The array literal notation [] is preferable.(no-array-constructor)
$.ajax({
type:"get",
url:"/test"
cache:false,
dataType:"text",
success:function(data){
var jsonData=JSON.parse(data);
var result=[];//代码规则不建议使用var result=new Array();
$.each(jsonData,function(index,obj){
result.push(obj);
});
for(var i=0;i<result.length;i++){
console.log(result[i].name);
}
}
});