IE下ajax如何向PHP服务端传汉字

23 篇文章 0 订阅

先说一下情况,我网页中的ajax开始是在谷歌浏览器中调试的,是可以传汉字到PHP服务端,PHP服务端也是可以接受的。后来由于项目需要,因为我们是做游戏的,游戏在电脑上有一个客户端,所以将网页放到客户端里面了,又因为我们的客户端是IE浏览器,所以这时候ajax传过去的汉字在PHP服务端接受的是空值,所以有了以下的改动。

出错前的前端代码:

$.get(ajaxMakeCard?uu="+uu+"&giftname="+giftname+"&amount="+amount+"&description="+description+"&validcode=" + validcode, function(data,status){
  if(status=="success"){
    //console.log("data: "+data);
    alert("data: "+data);<br>    }
});

这里直接利用ajax发送get请求

出错前的PHP服务端代码

$info = array();
$info['giftname'] = $_GET['giftname']; 
$info['description'] = $_GET['description'];  

很简单直接使用$_GET方法获取传递的参数信息

问题:除了谷歌浏览器,其他的浏览器上php服务端都无法接受前端传递的汉字(英文和数字都没问题)

解决办法:

在前端对URL进行编码,PHP服务端上进行解码

修改后的前端代码

var geturl = "ajaxMakeCard?uu="+uu+"&giftname="+giftname+"&amount="+amount+"&description="+description+"&validcode=" + validcode;
            geturl=encodeURI(encodeURI(geturl));
            alert("执行ajax前:"+geturl);
            $.get(geturl, function(data,status){
                if(status=="success"){
                    //console.log("data: "+data);
                    alert("data: "+data);
                        }
});

在发送请求前编码

修改后的PHP服务端接受代码

$info = array();
$info['uu'] = $_GET['uu'];    
$info['giftname'] = urldecode($_GET['giftname']);    
$info['description'] =urldecode($_GET['description']);  

问题解决,希望能帮到你!

修改后的写法,在谷歌浏览器上也是可以的传汉字的,亲测有效!!!

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值