我现在的项目ajax表单提交的一个问题(附原码50行)
JScript code
var ajax = new Ajax.Request( //提交
url,
{
method: 'post',
parameters: pars,
onComplete: btnSearch_onclickComplete
});
return false;
}
function btnSearch_onclickComplete(o) { //提交完毕执行这个函数
var rows = eval("(" + o.responseText + ")"); //取值
deleteRows();
if(rows == null) {
alert("検索データがありません。");
radYobiKbn_onclick(null);
} else {
_tableRows = rows;
_currentCase = CASE3;
for(var i = 0; i < rows.length; i++){ //响应结果可能是n条数据。
rowAdd(rows[i]); //rowAdd()是加数据的函数,问题来了
}
tabIndex();
}
return false;
}
我是用这种方法给页面附值的,
Element.update(td13,row["BUPPIN"]); //这里的row["BUPPIN"]就是上面rowAdd(rows[i])里的rows[i] 。
现在我的问题:
1。Element.update()这个是什么东西呢?
2。用这种方法有乱码的地方,比如44-44,叶面显示44?44,我想用下面的函数解决,怎么写呢? 谢谢!
JScript code
<%! String trans(String chi)
{
String result = "";
byte temp [];
try
{
temp=chi.getBytes("iso-8859-1");
result = new String(temp);
}
catch(UnsupportedEncodingException e)
{
System.out.println (e.toString());
}
return result;
}
%>
------解决方案--------------------这个东东偶遇到过,也是用ajax调用后台的东东,前台页面用的是utf-8编码,调ajax返回的是iso-8859这种系统默认编码的xml,而不是utf-8编码的,最后解决的方法就是让后台返回xml的时候,返回用utf-8编码的xml就可以了,因为当前页面会用utf-8,而你返回的是别的编码的数码,自然解析时就会有问题了
你自己可以用fiddler之类的监听你的页面html代码及http协议用的encoding及ajax的http协议及内容的编码
------解决方案--------------------Element.update(element,newContent)
用newContent的内容替换element里面的内容,好像是这样吧.
乱码那个问题,不是很明白.
------解决方案--------------------在你的servlet里面用上response.setCharacterEncoding("utf-8");
试试
------解决方案--------------------在JavaScript端利用encodeURIComponent将字符编码为UTF-8,就是%2A之类的,在Java端用URLDecoder.decode("字符串", "UTF-8");
------解决方案--------------------首先把页面代码改成utf-8
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
然后把后面修改成这样试试。
temp=chi.getBytes("iso-8859-1");
result = new String(temp, "utf-8");