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


Posted in Javascript onDecember 10, 2012

附上代码如下:
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)数字,布尔类型不需要 使用双引号 括起

Javascript 相关文章推荐
js中将多个语句写成一个语句的两种方法小结
Dec 08 Javascript
js下用层来实现select的title提示属性
Feb 23 Javascript
JQuery实现的图文自动轮播效果插件
Jun 19 Javascript
Javascript中的Prototype到底是什么
Feb 16 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
JS实现多物体运动的方法详解
Jan 23 Javascript
Vue中在新窗口打开页面及Vue-router的使用
Jun 13 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
Sep 28 Javascript
详解webpack打包后如何调试的方法步骤
Nov 07 Javascript
ajax跨域访问遇到的问题及解决方案
May 23 Javascript
vue实现PC端录音功能的实例代码
Jun 05 Javascript
ES6使用新特性Proxy实现的数据绑定功能实例
May 11 Javascript
解决js正则匹配换行问题实现代码
Dec 10 #Javascript
解决jquery异步按一定的时间间隔刷新问题
Dec 10 #Javascript
怎样在JavaScript里写一个swing把数据插入数据库
Dec 10 #Javascript
js里怎么取select标签里的值并修改
Dec 10 #Javascript
如何将JS的变量值传递给ASP变量
Dec 10 #Javascript
用jquery实现点击栏目背景色改变
Dec 10 #Javascript
jquery应该如何来设置改变按钮input的onclick事件
Dec 10 #Javascript
You might like
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
解析php常用image图像函数集
2013/06/24 PHP
PHP系统命令函数使用分析
2013/07/05 PHP
PHP生成指定随机字符串的简单实现方法
2015/04/01 PHP
PHP异常处理浅析
2015/05/12 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
jQuery 入门讲解1
2009/04/15 Javascript
原创javascript小游戏实现代码
2010/08/19 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
jQuery layui常用方法介绍
2016/07/25 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
设置cookie指定时间失效(实例代码)
2017/05/28 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
vue 录制视频并压缩视频文件的方法
2018/07/27 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
jQuery实现侧边栏隐藏与显示的方法详解
2018/12/22 jQuery
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
python实现合并多个list及合并多个django QuerySet的方法示例
2019/06/11 Python
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
法国二手MacBook销售网站:Okamac
2019/03/18 全球购物
会计专业毕业自荐书范文
2014/02/08 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
五一劳动节慰问信
2015/02/14 职场文书
证婚人致辞精选
2015/07/28 职场文书
MySQL中一条SQL查询语句是如何执行的
2022/04/08 MySQL
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS
Java Redisson多策略注解限流
2022/09/23 Java/Android