原文:http://blog.csdn.net/zhuanzhe117/article/details/47016413
调试代码遇到一个问题,就是前台执行删除操作后,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如下的说明:
"json": Evaluates the response as JSON and returns a JavaScript object. In jQuery 1.4 the JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. (See json.org for more information on proper JSON formatting.)
也就是说jquery1.4版本以后对json格 式要求非常严格,要满足json.org网站定义的格式才能执行success回调,否则都会出错,无法解析返回的json数据.我看了下返回到前台的字符串,的确不是严格的json格式.
于是把后台返回值改成了这样:
- if (flag == true) {
- result = "{\"result\":true}";
- }
但无论返回true还是false都执行success回调,这让我更郁闷.百思不得其解.
最终把前台判断改成了这样:
- if (rows) {
- $.messager.confirm('警告', '确定删除吗?', function(r) {
- if (r) {
- $.ajax({
- type : 'post',
- url : 'deleteStudentTeachClass',
- data : {
- "ids" : ids
- },
- dataType : 'text',
- traditional : true,
- success : function(result) {
- if(result=='true'){
- $.messager.alert("提示", "恭喜您,删除成功", "info");
- $("#dg").datagrid("reload");
- }
- else{
- $.messager.alert("提示", "操作失败", "info");
- $("#dg").datagrid("reload");
- }
- }
- });
- }
- });
- }