ajax JSON.parse(response) or not

今天通过ajax请求服务端数据遇到一个问题:无法直接通过
response.attribute方式获取json response的某个属性。

打印出请求返回的数据,发现返回值并不是一个javascript object,
而是一个json string, 必须JSON.parse之后才能使用。

对比之前写的ajax请求与springMVC controller发现问题在于request头部的Accept与response的content-type。

ajax请求没有指定dataType, controller没有指定produces的类型,默认accept为任意类型,而response为plain/text,所以接收到的response被理解为字符串。解决方式如下:

  1. 设置ajax dataType为json, 收到请求后会自动parse成object.
    spring会根据请求accept的类型来推断设置content-type类型。

  2. 或设置@RequestMapping 的produces为"application/json",
    jquery会根据content-type来处理返回值

  3. 或两者都设置

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139
  • Ajax 模块也是经常会用到的模块,Ajax 模块中包含了 jsonp 的现实,和 XMLHttpRequest ...
    对角另一面阅读 620评论 0 1
  • jQuery ajax - ajax() 方法 http://www.w3school.com.cn/jquery...
    光剑书架上的书阅读 1,178评论 0 15
  • Php代码 收藏代码 ajax通过 HTTP 请求加载远程数据。jQuery 底层 AJAX 实现。简单易用的高...
    Yumazhiyao阅读 944评论 0 4
  • 昨天在一个超链接处添加了一个事件,希望在跳转之前向后台发送一个请求,结果在$.post的回调函数中添加的e.pre...
    JasonQiao阅读 724评论 0 5