美文网首页
ajax请求,fastjson报出错误:syntax error

ajax请求,fastjson报出错误:syntax error

作者: carway | 来源:发表于2017-10-23 23:05 被阅读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

    相关文章

      网友评论

          本文标题:ajax请求,fastjson报出错误:syntax error

          本文链接:https://www.haomeiwen.com/subject/dfezuxtx.html