前端接收后台返回的“true”和 true
正月十五辛丑年 牛庚寅月 乙巳日
菜菜的我记录的第二天
前提条件为:如果后台返回的flag值是放在map里面并且是String值时,需谨慎处理,例:
后台伪代码:
@RequestMapping(value = "/printSave") @ResponseBody public String printSave(HttpServletRequest request,HttpServletResponse response) { Map<String,String> flagMap = new HashMap<>(); String saveFlag = "true"; flagMap.put("saveFlag",saveFlag); return JSONObject.toJSONString(flagMap); }
前端js伪代码,第一种(可成功):
$.ajax({ url:contextPath + "/ppp/printSave", //后台处理程序 type:'post', //数据发送方式 data:params, success : function(Data) {//回调方法,可单独定义 if (Data != null) { var saveFlag= Data['saveFlag']; if (saveFlag == "true") { alert("导出成功,可下载!"); makeButtonUse(); } else{ alert("导出失败,请重新操作!"); }
前端js伪代码,第二种(可成功):
$.ajax({ url:contextPath + "/ppp/printSave", //后台处理程序 type:'post', //数据发送方式 data:params, success : function(Data) {//回调方法,可单独定义 if (Data != null) { if (Data['saveFlag']) { alert("导出成功,可下载!"); makeButtonUse(); } else{ alert("导出失败,请重新操作!"); }
前端js代码错误示范:
$.ajax({ url:contextPath + "/ppp/printSave", //后台处理程序 type:'post', //数据发送方式 data:params, success : function(Data) {//回调方法,可单独定义 if (Data != null) { var saveFlag= Data['saveFlag']; if (saveFlag) { alert("导出成功,可下载!"); makeButtonUse(); } else{ alert("导出失败,请重新操作!"); }
具体原因分析:
错误代码原因分析:
var saveFlag= Data['saveFlag']; 得到的是String类型的"true",但if里面只能是boolean值,所以错误
正确代码原因分析:
第一种:
var saveFlag= Data['saveFlag']; 得到的是String类型的"true",等号逻辑运算【saveFlag == "true"】得到的是boolean值,所以能正常运行。
第二种:未分析出原因
{
不明白为什么 Data['saveFlag'] 的值为boolean类型的,明明后台传送过来的是String类型呀
好吧,第二种运行正确的原因还没分析出,有知道的大佬欢迎评论区补充一下,让我这个小菜鸡也好好学习一番
}