2006-04-13
最近估计是和utf-8干上了,今天又搞定一个ajax的编码问题
今天开始试用ajax最为项目的辅助,本来开始很顺利,测试的内容也比较简单
先在一个jsp中加入ajax的引擎
//ajax 引擎
然后在jsp中做个测试的select,和用于显示ajax的回传数据的区域
<table width="200" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="20"><select name="ajaxtest" size="1" onchange="showRoles('test1');">
<option selected="selected" value="test1" >test1option>
<option value="test2" >test2option>
<option value="test3" >test3option>
<option value="test4" >test4option>
select>td>
tr>
<tr style="display:none">
<td height="20" id="test1"> td>
tr>
再写一个js用了作为事件的触发
<script language="javascript">
//显示部门下的岗位

function showRoles(obj)
{
document.getElementById(obj).parentNode.style.display = "";
document.getElementById(obj).innerHTML = "loading
"
currentPos = obj;
send_request("http://localhost/oa-web/app/test/sample2_2.jsp?playPos="+obj);
}
再另外写一个资源jsp,用于读取资源回来


<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
两个jsp的编码都是utf-8的,但是在测试时发现回传回来的responseText都是乱码
去google上找,原来http_request 这个对象在request和response都是以gb2312进行的,需要更改编码
但是可恶的是javascript没有提供更改http_request 编码的方法于是在网上找了一个vbscript的函数
<SCRIPT LANGUAGE="vbScript">
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCode And &HFF00)\ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function
SCRIPT>
然后对回传回来的http_request 进行一下编码更改
// 处理返回信息的函数

function processRequest()
{

if (http_request.readyState == 4)
{ // 判断对象状态

if (http_request.status == 200)
{ // 信息已经成功返回,开始处理信息
URLEncoding(http_request.responseBody);
document.getElementById(currentPos).innerHTML = http_request.responseText;

} else
{ //页面不正常
alert("http_request.status exception code:"+http_request.status);
}
}
}
最终终于可以正常显示中文了
这两天和编码的纠缠有一个深刻的体会:做中国人难啊,要是计算机是中国人发明的多好:)
注:这种方法只在IE上试验过,别的浏览器还没有试
先在一个jsp中加入ajax的引擎
//ajax 引擎
然后在jsp中做个测试的select,和用于显示ajax的回传数据的区域
<table width="200" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="20"><select name="ajaxtest" size="1" onchange="showRoles('test1');">
<option selected="selected" value="test1" >test1option>
<option value="test2" >test2option>
<option value="test3" >test3option>
<option value="test4" >test4option>
select>td>
tr>
<tr style="display:none">
<td height="20" id="test1"> td>
tr>
<script language="javascript">
//显示部门下的岗位
function showRoles(obj)
{
document.getElementById(obj).parentNode.style.display = "";
document.getElementById(obj).innerHTML = "loading
"
currentPos = obj;
send_request("http://localhost/oa-web/app/test/sample2_2.jsp?playPos="+obj);
}

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
去google上找,原来http_request 这个对象在request和response都是以gb2312进行的,需要更改编码
但是可恶的是javascript没有提供更改http_request 编码的方法于是在网上找了一个vbscript的函数
<SCRIPT LANGUAGE="vbScript">
Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCode And &HFF00)\ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function
SCRIPT>
// 处理返回信息的函数
function processRequest()
{
if (http_request.readyState == 4)
{ // 判断对象状态

if (http_request.status == 200)
{ // 信息已经成功返回,开始处理信息
URLEncoding(http_request.responseBody);
document.getElementById(currentPos).innerHTML = http_request.responseText;
} else
{ //页面不正常
alert("http_request.status exception code:"+http_request.status);
}
}
}这两天和编码的纠缠有一个深刻的体会:做中国人难啊,要是计算机是中国人发明的多好:)
注:这种方法只在IE上试验过,别的浏览器还没有试
发表评论
- 浏览: 28943 次
- 性别:

- 来自: 金城

- 详细资料
搜索本博客
最近加入圈子
链接
最新评论
-
Spring+hibernate 单元测 ...
也许是我水平太差 不知道说了些什么....
-- by webday -
ajax中文上传编码问题
恩!我这几天也碰到了这个问题!做法也是跟你一样的!在前台的JS中将数据用esca ...
-- by Byron -
mingle使用小记--agile项 ...
最近我们制作了 eTrack项目追踪管理 和mingle类似,也是agile项 ...
-- by harryempire -
项目还是产品——需求之争 ...
项目和产品是有区别的,但不是质的不同,尤其是技术人员。 即使是产品开发团队,也是 ...
-- by catiga -
一个堆积木的算法题,比较 ...
wo~~不知道我理解的对不对似乎是背包问题啊~~你去搜索一下,以前写过这样的程序 ...
-- by lixiao






评论排行榜