使用ajax总是走到error里,不知错在哪 请大神指点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ajax总是走到error里,不知错在哪 请大神指点相关的知识,希望对你有一定的参考价值。

$.ajax(
type: "POST",
url: "index.aspx/checkWZ",
contentType: "application/json; charset=utf-8",
data: "wzxh:"+wzxh+",ggxh:"+ggxh+",wzmc:"+wzmc+",ghdw:"+ghdw+"",
dataType: "json",
success: function (data)
alert(data.d);
,
error: function (err)
showmsgbox(err, "error", "");

);
后台代码:
[WebMethod]
public static string checkWZ(string wzxh, string ggxh, string wzmc, string ghdw)

dblayer db = new dblayer();
db.dbconn = "zwsb";
string xtxh = System.Web.HttpContext.Current.Session["sbxtxh"].ToString();
string ksdm = System.Web.HttpContext.Current.Session["sbksdm"].ToString();
string res = "0";
string sql = @"select * from (select a.ksddid,a.wzxh,a.wzmc,a.ggxh,a.dj,a.sl,a.ghdwmc,a.ypssl,a.shpb,a.bh。。。省略";
DataTable myTable = db.getDataSet(sql).Tables[0];
if (myTable.Rows.Count > 0)

res = myTable.Rows[0]["bh"].ToString();

return res;

"wzxh:'"+wzxh+"',ggxh:'"+ggxh+"',wzmc:'"+wzmc+"',ghdw:'"+ghdw+"'"
data里面传递字符串要给字符串加上引号(不加引号传递int),所以你类型不正确,不能正确访问后台方法,肯定进入error
参考技术A url参数正确都不会出error吧 参考技术B 后端有问题,或者 数据格式问题 参考技术C kkkkkkkjkghnfth 参考技术D 返回的貌似不是json格式吧

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总是走到error里,不知错在哪 请大神指点的主要内容,如果未能解决你的问题,请参考以下文章

ajax传值总是返回error,后台试过了数据处理正常。

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

UVA10085-不知错在何处

jquery ajax參数加点号状态200进error

苹果 ios 微信浏览器界面 ajax 提交带 file 的 form 总是走error方法

java集合的一个程序,总是提示找不到符号,找不到原因在哪?求大神帮助!