前端接收后台返回的“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类型呀
好吧,第二种运行正确的原因还没分析出,有知道的大佬欢迎评论区补充一下,让我这个小菜鸡也好好学习一番
}
posted @ 2021-02-26 11:19  华卿  阅读(1101)  评论(0编辑  收藏  举报