网站赚钱思路,网站开发专业就业好不好,十大正规平台,运营方案来自博客园的一位朋友解答: 为什么要 eval这里要添加 “((data));//”呢#xff1f; 原因在于#xff1a;eval本身的问题。 由于json是以”{}”的方式来开始以及结束的#xff0c;在JS中#xff0c;它会被 当成一个语句块来处理#xff0c;所以必…来自博客园的一位朋友解答: 为什么要 eval这里要添加 “((data));//”呢 原因在于eval本身的问题。 由于json是以”{}”的方式来开始以及结束的在JS中它会被 当成一个语句块来处理所以必须强制性的将它转换成一种表达式。 加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式 expression转化为对象而不是作为语句statement来执行。举一个例子例如对 象字面量{}如若不加外层的括号那么eval会将大括号识别为JavaScript代码块的开始和 结束标记那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的 alert(eval({}); // return undefined alert(eval(({}));// return object[Object] 对于这种写法在JS中可以到处看到。 如: (function()) {}(); 做闭包操作时等。 注意该例子使用的框架是springspringmvcmybatis plus mybatis plus 是现有mybatis的增强版官网为:http://mp.baomidou.com 这里有更为详细介绍 代码生成器可参考:人人开源 http://www.renren.io/ 上述开源框架对于提高开发效率有很大的帮助 登录验证举例(成功例子): /*** 登录js*/$(function(){$(#btn_login).click(function(){var mobile $(#mobile).val();var password $(#pwd).val();alert(mobile||password)$.ajax({url:/LMS/user/Login,type:POST,data : {mobile:mobile,password:password},dataType : json,success:function(data){var json eval((data));if(json.returnCode111111){alert(json.returnMsg);}else if(json.returnCode222222){alert(json.returnMsg);}else if(json.returnCode000000){alert(json.returnMsg);}else{alert(有异常请和管理员联系);}},error:function(){alert(error);}});});
}); RestController
RequestMapping(/user)
public class UserController {private static Logger logger Logger.getLogger(UserController.class);Autowiredprivate UserService userService;Autowiredprivate UserAuthsService userAuthsService;RequestMapping(value/Login,methodRequestMethod.POST,producesapplication/json;charset-utf8)ResponseBodypublic String Login(String mobile,String password) {logger.info(用户手机号:mobile);logger.info(用户密码:password); EntityWrapperUserEntity wrapper new EntityWrapperUserEntity();wrapper.eq(mobile, mobile);UserEntity user userService.selectOne(wrapper); EntityWrapperUserAuthsEntity wrapper2 new EntityWrapperUserAuthsEntity();wrapper2.eq(identifier, user.getMobile());UserAuthsEntity userAuth userAuthsService.selectOne(wrapper2);logger.info(userEntity:user.getMobile());logger.info(userAuth:userAuth.getCredential());MapString,Object map new HashMapString,Object();if(!userAuth.getIdentifier().equals(mobile)) {map.put(returnCode, 111111);map.put(returnMsg,手机号有误);}else if(!userAuth.getCredential().equals(password)) {map.put(returnCode, 222222);map.put(returnMsg,密码错误);}else {map.put(returnCode, 000000);map.put(returnMsg,通过验证);map.put(user, user);map.put(userAuth, userAuth);} return JSON.toJSONString(map);}
} 失败例子: /*** 登录js*/$(function(){$(#btn_login).click(function(){var mobile $(#mobile).val();var password $(#pwd).val();alert(mobile||password)$.ajax({url:/LMS/user/Login,type:POST,data : {mobile:mobile,password:password},dataType : json,success:function(data){if(data.returnCode111111){alert(data.returnMsg);}else if(data.returnCode222222){alert(data.returnMsg);}else if(data.returnCode000000){alert(data.returnMsg);}else{alert(有异常请和管理员联系);}},error:function(){alert(error);}});});
}); 两个例子进行对比前者可成功返回json数据而后者返回未定义 而当你将data.returnMsg或data.returnCode后面的returnMsg,returnCode去掉直接alert(data) 是可以返回数据的 返回的数据直接是以json串(json字符串的形式{})而并未将json进行格式化所以直接取数据导致未定义 将json格式化有两种方法 方式一: 一种是上述 var json eval((data)); 称之为用eval解析 方式二: var json {user:user} var obj new Function(returnjson)//转换后的json对象 alert(obj.name); alert(obj.age);转载于:https://www.cnblogs.com/youcong/p/8929009.html