最近两天在做关于jquery ajax 的一些功能,遇到在google chrom 中能运行但在IE所有版本无法运行的情况,因为代码写的跨度有点大,一开始以为是兼容性的问题,后来逐步分析代码才发现是编码的问题,GBK 和 UTF-8 的问题。
数据库是UTF-8 编码 ,view 是 UTF-8 编码, 当然 Control 里也声明了UTF-8 但最终在 Control里取得 提交 的数据是GBK ,这里便不知道为什么了。后来在一处查到是汉字在用get 方法提交时会把字符转化成本地字符集,我这里转化成了GBK。由于编码问题导致了后续的一连串的错误。这里处理方法可以有以下三种
1、用 get 方法 提交 在ajax 提交前 用 encodeURI 先进行转换
2、用 get 方法 提交 在control 里 用 urldecode 转换过后再用icov 转换成 UTF-8
3、 用 post 方法提交 (如果这里你的form和control 没有错误,但仍然在control里得不到提交的数据的话那是因为你在 ./application/config/config.php 中设置了$config['csrf_protection'] = TRUE; 这里为什么不能提交请看手册,设置 $config['csrf_protection'] = FALSE;后 post ajax 便可以进行了。)
要想查看ajax 过程中的错误
在 success:function(i){}后面加 ,error: function (xmlHttpRequest, error) {
for(i in xmlHttpRequest)
{
alert(xmlHttpRequest[i]);
}
}
就行了