正月十五辛丑年 牛庚寅月 乙巳日
菜菜的我記錄的第二天
前提條件為:如果后台返回的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類型呀
好吧,第二種運行正確的原因還沒分析出,有知道的大佬歡迎評論區補充一下,讓我這個小菜雞也好好學習一番
}