欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

IE浏览器与FF浏览器关于Ajax传递参数值为中文时的区别实例分析

程序员文章站 2022-06-03 15:10:15
本文实例讲述了ie浏览器与ff浏览器关于ajax传递参数值为中文时的区别。分享给大家供大家参考,具体如下: 前面介绍了《javascript基于ajax回调函数传递参数》...

本文实例讲述了ie浏览器与ff浏览器关于ajax传递参数值为中文时的区别。分享给大家供大家参考,具体如下:

前面介绍了《javascript基于ajax回调函数传递参数》,这里主要来分析一下ajax传递中文参数过程中针对不同浏览器的乱码处理方法。

ajax传递参数为中文时出现乱码,我遇到的情况是:

1.我的数据库连接 编码为 gb2312,latin1_swedish_ci

2.php 文件编码格式为 utf-8,浏览器显示编码为 : utf-8

3.我的页面显示方式为两种:

一)页面加载时自动加载,每隔一秒刷新一次

二)点击一个分机组名称时,获得该分机组的相应的成员卡片信息

4.对于第一种情况的处理:

control.php页面上获得session:

读取数据库的内容:

line 53:

复制代码 代码如下:
$grouparr[] = iconv("gb2312","utf-8",$g[0]); //数据库内容转换为 utf-8,这样能正常显示页面上的中文

line106:

复制代码 代码如下:
$_session['dispatchgroup'] = iconv("utf-8","gb2312",$grouparr[0]);//将转换的中文修改为 gb2312,用于在 dispatchinfo.php 文件中获得查询的条件值,获得gb2312编码的值。

dispatchinfo.php: line 291

if($_session['dispatchgroup']){
  $groupaddressinfo = function_listaddressesbygroup($_session['dispatchgroup'],1,$value,0,$_session['dispatchexten'],$_session['dispatchgrouppage']);  
  //2013-5-17$groupaddressinfo = "listaddressesbygrouptype|0|localext|1|12|1,,,801,空闲,,|1,,,802,不在线,,|1,,,803,空闲,,|1,,,804,不在线,,|,,,805,不在线,,|,,,806,不在线,,|,,,807,不在线,,|,,,808,不在线,,|,,,809,不在线,,|,,,810,不在线,,|5,餐厅,,811,10.1.6.189;连接|6,,,812,user2;断开|";
}

此种情况ie和ff,均能正常显示。

5.对于第二种情况:

点击“分机组”名称,获得点击的分机组的中文名称,通过ajax 传递到 dispatchinfo2.php 文件中进行处理,修改前,js点击事件后获得的中文名称,alert均为正常值【格式为utf-8】,此时数据库中的内容为gb2312,这时,在经过 iconv转码就会出现错误。

因为只对于第一种情况,我在处理时采用转换编码的方式

复制代码 代码如下:
$groupname = iconv("gb2312","utf-8",$groupname);

此时再次编码就会出现错误了,

解决方法:

js 的异步提交处理:

checkval(); 
var ajax = initajax();
var url = "dispatchinfo2.php?"+arges;
//2013-08-21 limx 中文编码问题
url = encodeuri(encodeuri(url));
ajax.open('get',url,true);

dispatchinfo2.php

$groupname = urldecode($groupname);
$groupname = iconv("utf-8","gb2312",$groupname);

四行代码完美解决中文编码的问题。

因为ajax发送数据都是采用utf-8编码的方式发送的,所以要在服务器 端进行编码转换(我这里页面是采用gb2312编码的,如果是采用utf-8的话应该不会有这步的问题),所以我在服务器端进行了utf-8转 gb2312

希望本文所述对大家ajax程序设计有所帮助。