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‘) + "&pwd=" + $(‘#pwd‘).attr(‘value‘),
dataType: "text",
success: function(data) {
alert(data);
}
});

点击登陆,成功连接数据库并且查询到了值(在loginManager.jsp页面有用System.out.print()打印过查询到的值)。但success里的东西不执行。用过断点,当执行完dataType后,success直接跳出,里面的alert()不执行,这是为什么呢?
改了下代码,如下:
JScript code:

复制代码 代码如下:

$.ajax({
type: "post",
url: "jsp/loginManager.jsp",
async: true,
data: "name=" + $(‘#rname‘).attr(‘value‘) + "&pwd=" + $(‘#pwd‘).attr(‘value‘),
dataType: "text",
success: function(data) {
alert(data);
},
error: function(e) {
alert(e);
}
});

但是还是一样,没反应,只是把登陆页面刷新了!!!
针对上面只是把登录页面刷新了的问题,是a链接里有点小问题,原来我是a链接里面有href,开始,href=”",所以刷新了页面,刷新页面前进入了action,所以也获得了提交数据,但是还没来得及返回,就刷新了。改成href=”#”就ok了!正如:
<a href=‘#‘ onclick= ‘delMenuContent(cellvalue)>
还有一个原因是因为我用的是异步提交,没等验证成功的时候已经执行了按钮的提交事件,所以页面已经刷新,将其改成同步提交,按钮的提交事件必须等ajax验证结束后判断是否进行提交就可以解决这个问题了!

最近在看jQuery的API文档,在使用到jQuery的ajax时,如果指定了dataType为json,老是不执行success回调,而是执行了error回调函数,极度郁闷。后面改为1.2.6版本可以执行。

  然后继续下载了几个jquery版本,如1.3.2,1.4.0的,指定dataType为json都不能执行success回调,只有小于1.3版本的才能执行success回调。

  最后去jquery的网站找到了在线的api文档看了下,地址:http://api.jquery.com/jQuery.ajax/ ,发现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数据。说的是1.4+以上的,那为什么下载的1.3.2指定dataType为json时也不能执行success回调呢?

  怪不得不执行,原来我返回的是{success:true,id:1} 这种不规则的字符串,不是严格的json格式,改成{"success":true,"id":"1"} 就可以正常执行success回调了。
  
  JSON格式总结下,详细的去json.org 查看。
  1)键名称:用双引号 括起
  2)字符串:用使用双引号 括起
  3)数字,布尔类型不需要 使用双引号 括起

时间: 2024-08-09 22:01:58

ajax不执行success回调而是执行了error回调的相关文章

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

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

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

问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准写法,导致总是执行error回调方法 解决方案:使json格式务必符合下述3个标准写法:      1)键名称:用双引号括起:    2)字符串:用双引号括起:    3)数字,布尔值不需要使用双引号括起 : 注意:一定是双括号!

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

调试代码遇到一个问题,就是前台执行删除操作后,controller返回数据,但前台接收时,ajax不执行success回调,总是弹出失败的对话框.接收数据类型是json. 先看看我的前台代码. if (rows) { $.messager.confirm('警告', '确定删除吗?', function(r) { if (r) { $.ajax({ type : 'post', url : 'deleteStudentTeachClass', data : { "ids" : ids

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

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

Jquery ajax json 不执行success的原因 坑爹

最近在看jQuery的API文档,在使用到jQuery的ajax时,如果指定了dataType为json,老是不执行success回调,而是执行了error回调函数,极度郁闷.后面改为1.2.6版本可以执行. 然后继续下载了几个jquery版本,如1.3.2,1.4.0的,指定dataType为json都不能执行success回调,只有小于1.3版本的才能执行success回调. 最后去jquery的网站找到了在线的api文档看了下,地址:http://api.jquery.com/jQuery

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

1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准写法,导致总是执行error回调方法 解决方案:使json格式务必符合下述3个标准写法:      1)键名称:用双引号括起:    2)字符串:用双引号括起:    3)数字,布尔值不需要使用双引号括起 : 注意:一定是双括号! 2.jQuery中ajax使用json数据类型总是跳过success

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

背景: 在使用到jQuery的ajax时,如果指定了dataType为json,老是不执行success回调,而是执行了error回调函数. 原因: 然后继续下载了几个jquery版本,如1.3.2,1.4.0的,指定dataType为json都不能执行success回调,只有小于1.3版本的才能执行success回调. 去jquery的网站找到了在线的api文档看了下,地址:http://api.jquery.com/jQuery.ajax/ ,发现dataType如下的说明  "json&q

jquery ajax 从后台返回json结果后 不执行success方法的问题

大家在开发的过程中都会经常使用异步方式与后台进行交互,从后台往前台返回的结果信息常常用json字符串的格式,如果在后台拼的返回结果串(json)如果有问题(json格式不对).ajax前端的js代码将直接调用error中的方法,此时是不会走success方法的.这里大家可以去网上找个json在线验证的网站看下自己的json串是否正确,如果是用json工具包生成的json串是没有问题的.

Jquery ajax加载等待执行结束再继续执行下面代码操作

Jquery等待ajax执行完毕再继续执行下面代码的效果,具体代码如下,其实就是将 jquery ajax 函数的 async 参数设置为 false 即可,该参数默认为 true: $(document).ready(function(){ loadphpernote(); window.open('http://www.phpernote.com'); }); function loadphpernote(){ var url='http://www.phpernote.com/ajax.p