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