今天通过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被理解为字符串。解决方式如下:
设置ajax dataType为json, 收到请求后会自动parse成object.
spring会根据请求accept的类型来推断设置content-type类型。或设置@RequestMapping 的produces为"application/json",
jquery会根据content-type来处理返回值或两者都设置