ajax主流浏览器的中文参数传递

做web的童鞋经常遇到这样的痛苦,前端传递给后台的中文参数是乱码,导致无法正确查询数据库或做文件处理。现在主流的浏览器主要是三种:IE,Firefox,Chrome。
我个人在web时,比较喜欢用Chrome做测试展示,因为平时都常用Chrome。我看过各大浏览器之间的比较,Chrome的综合实力是很给力的,Google出品的浏览器果然很牛。Firefox是比较常用的浏览器,懂计算机的都喜欢用Firefox,因为Firefox是比较早脱离IE内核,在性能上又比IE好,且又是开源的内核,所以一旦发布,就对IE浏览器的市场产生很大的冲击,IE是仗着微软的操作系统邦定,所以一直把持着浏览器的主要市场。
好了,说了很多废话,进入正题把。ajax传递参数的方法有两种,GET和POST。GET的使用比较简洁,传递参数可以直接把url中,类似于[url]search.php?name='wangjian'[/url],而XMLHttpResponse.send方法的参数为空,GET方式的send一定为空,search.php中获取GET参数时只需
$name=$_GET['name']
,search.php中就可以使用$name变量;而POST方法无需把参数拼接在url中,而是使用send函数传递给后台,而url只需设定指定的后台处理php文件,处理方式如下:

var url='php//save_file.php';
var params='file_name='+file+'&type='+type';
....
xmlHttp.open("POST",url,false);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.send(params);

xmlHttp.setRequestHeader三个语句时必须的,这是传递过长参数时,必须添加的语句。后台获取参数的方法类似于GET。两者方法有一些不同,GET使用简单,执行效率块,但不安全,因为参数都写在url中,适合无需保密的一次性参数传递;POST参数使用安全,传递参数大,适合安全可交互的长参传递。
ajax在中文参数时,会根据浏览器的不同,需做不同的处理,Firefox和Chrome在接受中文,需做编码转换处理
$file_name=iconv("UTF-8","GB2312",$file_name);

IE则无需做这些处理,可以直接使用,所以在GET或POST这些参数后,需要判断当前的浏览器是,并根据类型做不同的处理,判断浏览器的方式有两种,一是js把浏览器类型传至后台,二是后台php自行判断浏览器类型;js判断是否为IE浏览器可以使用

if(document.all)
alert('IE');
else
alert('No IE');

php判断浏览器可以使用

$type=$_SERVER["HTTP_USER_AGENT"];

综上所述,传递中文参数时,需要判断浏览器类型,假设$type是否为IE的标识,$type=0,IE;else no IE。如此代码如下:
   if($type!=0)
{
$file_name=iconv("UTF-8","GB2312",$file_name);
..... //其他中文参数
}

好了,写了这么多,大家可以去试一下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值