ajax不运行success回调而是运行error回调

Posted mfmdaoyou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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例如以下的说明: 


         "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回调的主要内容,如果未能解决你的问题,请参考以下文章

jquery 使用ajax,正常返回后,不执行success的问题

spring mvc ajax success不执行 反倒执行error

jquery ajax请求成功也有response,但是不进success

jquery通过ajax方法获取json数据不执行success回调

jquery通过ajax方法获取json数据不执行success

ajax回调函数无法获取后台传过来的值(SSM框架),大神请指教!