jquery ajax返回html乱码解决
情景:
index.html 使用如下代码访问另外一个html片段
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function rewritedata(id){ var uu = "/ciweekly/categorydataph/html/ciweeklyph_" +id+ ".html" ; $.ajax({ url:uu, type: 'POST' , dataType: 'text/html' , error: function (){ }, success: function (dd){ $( "#ph_dd" ).html(dd); } }); } |
注意:被访问的html为片段文件 ,里面只有一些数据代码 没有头部没有设置编码
使用ajax在发出请求后,xmlhttp组件在解析返回数据的编码时,是根据 http 响应的头部中是否有页面内容编码声明决定的.
如果返回的 http 头部中包含 charset 的内容编码声明,则按指定的编码读 responseBody,转换后存在 responseText中.
如果返回的 http 头部中没有包含 charset 的内容编码声明,则默认其编码为 utf-8,
所以,如果是gb2312的html页面,在用ajax请求后,读出来肯定是乱的.
原因是因为 html 页面服务端在输出的时候,是不包含 charset 内容编码声明的,所以ajax就会按utf-8
来解码,不乱才怪.
解决办法:在被访问的html片段页面头部放入如下声明:
1
|
< meta http-equiv = "Content-Type" content = "text/html; charset=gb2312" >
|