ajax不执行success回调而是执行error回调
调试代码遇到一个问题,就是前台执行删除操作后,controller返回数据,但前台接收时,ajax不执行success回调,总是弹出失败的对话框.接收数据类型是json.
先看看我的前台代码.
if (rows) { $.messager.confirm('警告','确定删除吗?',function(r) { if (r) { $.ajax({ type : 'post',url : 'deleteStudentTeachClass',data : { "ids" : ids },dataType : 'json',traditional : true,success : function(result) { $.messager.alert("提示","恭喜您,删除成功","info"); $("#dg").datagrid("reload"); },error : function(msg) { $.messager.alert("提示","操作失败","info"); $("#dg").datagrid("reload"); } }); } }); } 下面是后台controller代码
@RequestMapping(value = "/deleteStudentTeachClass") public void deleteStudentTeachClass(String ids,HttpServletRequest request,HttpServletResponse response) throws Exception { String dataBaseName = "itoo_platform"; String[] strArray = null; strArray = ids.split(","); Boolean flag = false; String result = "false"; try { flag = schoolTeachingBean.deleteStudentTeachClass(strArray,dataBaseName); if (flag == true) { result = "success"; } } catch (RuntimeException e) { e.printStackTrace(); } outToJson.outJson(response,result); } 通过查询发现dataType如下的说明:
也就是说jquery1.4版本以后对json格 式要求非常严格,要满足json.org网站定义的格式才能执行success回调,否则都会出错,无法解析返回的json数据.我看了下返回到前台的字符串,的确不是严格的json格式.
if (flag == true) { result = "{"result":true}"; }
但无论返回true还是false都执行success回调,这让我更郁闷.百思不得其解. 最终把前台判断改成了这样:
if (rows) { $.messager.confirm('警告',dataType : 'text',success : function(result) { if(result=='true'){ $.messager.alert("提示","info"); $("#dg").datagrid("reload"); } else{ $.messager.alert("提示","info"); $("#dg").datagrid("reload"); } } }); } }); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |