前端接收后台返回的“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類型呀
好吧,第二種運行正確的原因還沒分析出,有知道的大佬歡迎評論區補充一下,讓我這個小菜雞也好好學習一番
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM