NutzCN Logo
问答 ajax里面的dataType和服务端setContentType,
发布于 2139天前 作者 qq_769289a5 1214 次浏览 复制 上一个帖子 下一个帖子
标签:

ajax里面的dataType和服务端setContentType,这两个是不是重复了,为什么有时服务端设置text/plain,dataType设置了“json”,就会报错?

我看了网上说:

1、服务端不返回response content-type:application/json,前端dataType指定json,解码http响应内容,data类型是Object

2、服务端返回response content-type:application/json,前端dataType不指定json,解码 http响应内容,data类型是Object

,先问解码http啥意思,json等不是数据类型吗,解码不是什么iso-8859-1,utf-8之类的么,这怎么扯到一起了。然后为什么这两个都可以解码,返回Object,难道dataType和服务端只要设置一个就可以,两者功能是一样的么?

3 回复

json是数据格式编码,utf8是字符集编码,两个层面的东西

如果设置为application/json,低版本的ie会当成下载,为了兼容,有些项目会设置成text/plain,但内容没区别,响应体依然是json文本。

然后呢,jquery在处理ajax响应的时候,如果content type是application/json或者dataType是json,就会把响应体读成文本(涉及数据集编码),然后,再把文本按json格式进行解析(数据格式编码),变成js对象。

或者这样说, utf8/gbk等字符集编码,管的是 byte[]/InputStream 转 char[]/String/Reader的过程,json/xml等文本格式编码,是管char[]/String/Reader转对象的过程。

一般Post请求,服务器端java代码响应时setContentType和前端dataType两个是不是重复了,是不是只要设置一个就可以?两个都指定数据格式编码,都是一样的

添加回复
请先登陆
回到顶部