Ajax常见错误总结
针对近来做的项目中对ajax常见错误做如下总结。
使用情景:框架使用spring,前台调用ajax,访问controller,在得到请求结果后,输出。
ajax代码块如下
function sendAjax1() {
var msg = 'hello';
$.ajax({
type : "POST",
url : '/pineBang/ajax/aQuery2.do',
data : msg,
success: function(data){
alert('success');
},
error: function(){
alert('failed');
}
});
}
- 情况1
- controller未进入,ajax报404错误,success和failed 均未输出
分析:
这种情况首先检查ajax的语法问题,特别是路径问题,debug时,可以查看下,是否提示未找到访问的路径。
另外一种情况是实际遇到的,两端js代码块,ajax代码块是在第二段运行的,第一段代码在报错报错后,影响第二段的ajax运行。
建议,js代码块是从上到下依次运行的,这种情况,可以检查下之前的js是否报错,快速一点的方法可以将ajax代码块,放在最前面有限运行。情况2
- controller已进入,ajax报404错误,success和failed 均未输出
- 分析:
这种情况,我们先来总结下,后台传给ajax数据的两种方式。
方法一:将返回的信息生成ajax字符串,写入response
部分代码如下:String msg = JSONObject.fromObject(DTO).toString();
writer = response.getWriter();
writer.write(msg);
方法二:使用注解@ResponseBody可以将结果,转换成JSON。
当然这个结果是一个Map,可以放入实体类,字符串等信息。
如上是常见的两种方法,遇到别的再添加吧。
针对上述情况,根据实际,看是第几种情况。
稍微提醒下,如果采用第二种写法,而没有使用注解@ResponseBody,是会报404的。
另外,也可能因为jar包的问题,报406错误的,这个时候不要慌张,找找jar就行了
jackson-core-asl-1.9.12.jar,
jackson-mapper-asl-1.9.12.jar
大概是这两个jar包,当时在同事机器上遇到的情况,没有详细记录。遇到这种情况可先排查jar问题。
- 情况3
- controller已进入,ajax报406错误,success和failed 均未输出
- 分析:
目前只遇到jar包问题,可优先排查这个.
- Finally
ajax 所遇问题后续再更新,如果有别的情况,也请只会,共同讨论。
另外,本人在github上,新增自己写的小项目,项目在持续更新中,springmvc+ibatis+postgresql+easyui 作为日常练习,和平常的知识汇总,有兴趣的朋友可以看下,也可以共同学习练手。
地址如下https://github.com/Nigel6917/pinewood.git