首页 > 代码库 > ajax不运行success回调而是运行error回调
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 = http://www.mamicode.com/"/deleteStudentTeachClass")>通过查询发现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"); } } }); } }); }
ajax不运行success回调而是运行error回调
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。