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. 或两者都设置

你可能感兴趣的:(ajax JSON.parse(response) or not)