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");
								}
						}						

					});
				}
			});
		}
时间: 2024-10-10 03:58:53

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

ajax不执行success回调而是执行了error回调

最近在看jQuery的API文档,在使用到jQuery的ajax时,如果指定了dataType为json,老是不执行success回调,而是执行了error回调函数 附上代码如下: JScript code: 复制代码 代码如下: $.ajax({ type: "post", url: "jsp/loginManager.jsp", data: "name=" + $('#rname').attr('value') + "&pw

ajax提交数据,回调函数不执行或总是执行error回调函数的问题

jsp页面: <form id="itemAddForm" class="itemForm" method="post"> <div id="tab1" class="tabcontent"> <div class="form"> <div class="form_row"> <label><b>

C++中单项链表的结点删除问题——为什么我的链表编译能过,但是运行的时候显示:*** Error in `./list&#39;: free(): invalid pointer: 0x08ba20cc *** 已放弃 (核心已转储)

1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 5 struct student{ 6 int my_id; 7 char name[20]; 8 int my_age; 9 int my_score; 10 student *next = nullptr; 11 student() = default; 12 student(int id,const char *n,int age,int sco

运行shell脚本提示“syntax error near unexpected token for((i=0;i&lt;$length;i++))”

sh脚本如下: #!/usr/bin/env bash county="3 4 5 6 7 8 9 10 11 12 16 29 39 44 53 62 72 84 97 115 128 151 168 187 199 218 230 10079 10239 32478" array=($county) length=${#array[@]} for((i=0;i<$length;i++)) do $HIVE_HOME/bin/hive -e "select * fro

jquery ajax 后台响应成功,返回正确json但不执行success方法,执行error的问题

昨天被这问题卡了好几个小时.查看http状态码:是200.而且返回了预想的json字符串.但执行的是error方法,不执行success方法.在网上查了一下,才发现是后台页面返回的json字符串格式不对,我的错误是冒号“:”写成了逗号“,”.就会出现ajax前端的js代码直接调用error中的方法这样的问题. 可以去json在线验证网站 看下自己的json串是否正确,如果是用json工具包生成的json串是没有问题的.

解决IIS7运行ASP提示错误:An error occurred on the server when processing the URL. Please contact the system administrator

原文:解决IIS7运行ASP提示错误:An error occurred on the server when processing the URL. Please contact the system administrator 在WINDOWS7或SERVER2008上安装了IIS7,调试ASP程序时出现以下错误: An error occurred on the server when processing the URL. Please contact the system admini

Zend Server安装后首次运行就出现Internal Server Error的解决

无论是使用哪个版本的Zend Server来搭建PHP服务器,首次运行都会出现Internal Server Error的错误,对很多新手而言,每当看到这种错误时,那一刻内心绝对都是崩溃的.然而,这个错误并没有想象中难解决,可以说是简单得不能再简单了. 作为一个开发者,遇到错误不要紧,找到解决方案也不难,但是我们是程序猿,我们要知其所以然,因此出现本次错误,立刻去查看错误日志,打开 \Apache2\logs\error.log ,发现有这么一行记录: [error] Zend Enabler

$.ajax()中的success和error的使用注意事项

$.ajax({})中的success()函数是ajax向后台请求成功后自动调用的,在success(response)函数里面的变量只有一个,response是后台返回来的值. 当后端没有给前端传回值时,$.ajax()中不会执行success,执行的是error. 在项目中,当后端servlet没给前端传回一个值时,$.ajax()执行的是error里面的程序:故特地设计给前端传回一个字符串"true". 原文地址:https://www.cnblogs.com/mshanBlog