最近项目需要我要弄个网站,但是我比较不是学习前端为主,只能魔改一些模板代码了。刚好在ajax请求方面遇到一个问题。我前端用ajax请求,后台那边报错
前端代码
F12->NetWork 查看请求所有信息
后来网站查了一下资料说把 data变成JSON.stringify(jsondata)
所以改成代码2
但是还是报错
后面查了无数资料,终于让我看到一个
添加contentType:"application/json;charset=utf-8",
但是我查一下jQuery的$.post()方法的API,所需的参数最多是4个,没有contentType的参数
Jquery的post()底层还是用ajax方法,所以还是用ajax方法吧。
$.ajax(
type;'POST',
url:url,
data:data,
contentType:"application/json;charset=utf-8",
success:success,
dataType:'json'
});
如果是data:{phone:obj.val()}话,还是会报错
其实从之前请求头request也可以看出来,假如是data:{phone:obj.val()}的话,传的值不是json格式,所以
得data:JSON.stringify(jsondata)
最终当然是没有报错啦。成功发送短信验证码。
总结:
加上data:JSON.stringify(jsondata),传的值才是json格式。
但是即便加上了JSON.stringify(jsondata)也会报错,因为可以从代码1、2的Content-type可以看到,虽然dataType是json,但是Content-type并不是json,而是application/x-www-form-urlencoded;charset=UTF-8。可能是这个原因,所以后台报错的信息说少了“{”,可能是因为这个Content-type的请求头的问题,springMVC识别不出json,所以缺少“{”才报错的。
参考文章:
http://blog.csdn.net/wqh8522/article/details/72848132
http://blog.csdn.net/wangxiaohu__/article/details/7254598
http://www.cnblogs.com/andyfengzp/p/6184752.html