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

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

fastjson报错信息.png
前端代码
ajax请求,fastjson报出错误:syntax error, expect {, actual error, pos 0_第1张图片
代码1
F12->NetWork 查看请求所有信息
ajax请求,fastjson报出错误:syntax error, expect {, actual error, pos 0_第2张图片
代码1的请求

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

所以改成代码2


ajax请求,fastjson报出错误:syntax error, expect {, actual error, pos 0_第3张图片
代码2
ajax请求,fastjson报出错误:syntax error, expect {, actual error, pos 0_第4张图片
代码2的请求.png

但是还是报错

代码2的报错信息.png

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

ajax请求,fastjson报出错误:syntax error, expect {, actual error, pos 0_第5张图片
$.post()的API.png

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

$.ajax(
  type;'POST',
  url:url,
  data:data,
  contentType:"application/json;charset=utf-8",
  success:success,
  dataType:'json'
});
ajax请求,fastjson报出错误:syntax error, expect {, actual error, pos 0_第6张图片
代码3

ajax请求,fastjson报出错误:syntax error, expect {, actual error, pos 0_第7张图片
代码3的请求

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

代码3的报错信息

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

ajax请求,fastjson报出错误:syntax error, expect {, actual error, pos 0_第8张图片
代码4
ajax请求,fastjson报出错误:syntax error, expect {, actual error, pos 0_第9张图片
代码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

你可能感兴趣的:(ajax请求,fastjson报出错误:syntax error, expect {, actual error, pos 0)