php服务端 如何接受前端使用ajax发送get请求而传递过来的汉字

记录一下自己在这里出现的问题:

我的基本情况:

整个前端和服务端包括服务器默认都采用的是UTF-8编码

前端:我在js文件中使用jQuery提供的$.get()方法进行异步的数据提交,这里的get请求中有汉字

服务端:使用ThinkPhp框架进行服务端的处理,这里他要接受前端发送的请求,要得到get请求中的参数信息如name等;

出错前 前端的代码:

$.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);
} });

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

出错前 服务端的处理代码:

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

 很简单直接使用GET方法获取前端传递的参数信息

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

解决办法:

在前端对url进行编码,服务端进行解码

修改后的前端代码

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);
                        }
});

在发送请求前编码

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

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

 

问题解决!希望可以帮到你

posted @ 2013-11-21 10:33  mao2012  阅读(2358)  评论(0)    收藏  举报