我好郁闷啦,用ajax传中文在火狐里面,没有问题;在IE里面总是去到错误的程序,打印出结果才发现,IE里面传过来的值是gb2312的;
在utf-8的环境下,显示为乱码;
解决方法为:传值的时候用js编码,服务器端再解码
以下的网友的解答:
“
OS: XP SP3 新建记事本是 ANSI 格式,你 要另存为时选中 UTF-8; 其次IE6传值,URL后面的参数不是以UTF-8形式编码的; 客服端和服务器端最好统一编码,客户端浏览器最好把“查看-编码"的自动选择打上勾,代码里面也要设置,浏览器也要设置一下 你所说的传值乱码问题:用 JavaScript encodeURI() 把你要传的参数用它编码后再传,到服务器再解码 参考:http://www.w3school.com.cn/js/jsref_encodeURI.asp
”
js代码:
$.get(
'sogo_map.php?action=hour&up='+encodeURI(up_place_hour)+'&down='+encodeURI(down_place_hour)+'&step='+encodeURI(step_place_hour),
{},
function(msg){
//alert(msg);
if(msg == 0){
alert("上车及下车地点输入有误,请重新输入");
return false;
}else if(msg == 1){
alert("无法获取参考时间及参考公里数,请稍后再试");
return false;
}else{
var data = msg.split(";");
$("#time_budget_0").html(data[0]);
$("#dis_budget_0").html(data[1]);
$("input[name='time_budget_0']").attr("value", data[3]);
$("input[name='dis_budget_0']").attr("value", data[1]);
$("input[name='cost_budget_0']").attr("value", data[2]);
}
});
PHP解码:
$start = @urldecode($_GET['up']);
$end = @urldecode($_GET['down']);
$step = @urldecode($_GET['step']);