关于web中ajax异步交互学习(二)

今天在写代码的问题:

前台通过ajax和后台的SSM框架进行交互,进行测试时发现,后台已经正常进入controller,并且正常进入对应的方法,也正确的返回了对应的数据,但是,前台ajax总是会进入到error的function里面。

还是老办法,一步一步解决问题。

定位问题:既然每次都进error的function里,那我们就吧error的function的参数打印出来,ajax的error function的参数有三个,分别为:error:function(jqXHR,textStatus,errorThrown)

上面为这三个参数的具体含义。

知道这些参数的含义,那么我们就可以在进入error:function的时候把它们在控制台console.log()出来,这里我只打印出来以下4项:

console.log(jqXHR.status);

console.log(jqXHR.readyState);

console.log(jqXHR.responseText);

扫描二维码关注公众号,回复: 5156282 查看本文章

console.log(jqXHR.statusText);

然后自己又进行了一次测试,这次可以在控制台看到readyState---4,正常,status--200,正常,但是resposeText提示下面这个异常,unexpected token in json at postion 4,后面紧接着一句,parse error。

看这句话意思是后台数据返回前台时json解析出现错误了,去网上找了很多解决方案,大家都是dataType写错了才导致这个异常,可是自己的dataType:“json”没错,这怎么回事?

想了很久,忽然想到,可能action里的方法上没有加@ResponseBody这个注解,一去检查,果然,问题找到了,加上注解就可以正常返回了。

总结:平时responsebody注解没少用,可是自己没有想过他是干嘛用的,其实他就是一个将你返回的数据以json形式返回给前台,当然这里返回的类型不仅仅是String,还有List,map,VO,等等。

但是当我们方法返回的是modelandview时,是不需要这个注解的

最后,感谢这位博主的分享。

猜你喜欢

转载自blog.csdn.net/dghkgjlh/article/details/85050811