ajax请求,fastjson报出错误:syntax error, expect {, actual error, pos 0

最近项目需要我要弄个网站,但是我比较不是学习前端为主,只能魔改一些模板代码了。刚好在ajax请求方面遇到一个问题。我前端用ajax请求,后台那边报错

fastjson报错信息.png
前端代码
代码1
F12->NetWork 查看请求所有信息
代码1的请求

后来网站查了一下资料说把 data变成JSON.stringify(jsondata)

所以改成代码2


代码2
代码2的请求.png

但是还是报错

代码2的报错信息.png

后面查了无数资料,终于让我看到一个
添加contentType:"application/json;charset=utf-8",
但是我查一下jQuery的$.post()方法的API,所需的参数最多是4个,没有contentType的参数

$.post()的API.png

Jquery的post()底层还是用ajax方法,所以还是用ajax方法吧。

$.ajax(
  type;'POST',
  url:url,
  data:data,
  contentType:"application/json;charset=utf-8",
  success:success,
  dataType:'json'
});
代码3

代码3的请求

如果是data:{phone:obj.val()}话,还是会报错

代码3的报错信息

其实从之前请求头request也可以看出来,假如是data:{phone:obj.val()}的话,传的值不是json格式,所以
得data:JSON.stringify(jsondata)

代码4
代码4的请求头

最终当然是没有报错啦。成功发送短信验证码。

总结:

加上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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容