jsp_ajax_post 方式传参数乱码问题学习笔记
2010-11-09 23:35
501 查看
问题:我全站都是使用utf-8编码,不过在用ajax向servlet传参数的时候,firfox显示正常,IE8出现乱码。
部分源码如下:ajax(js)代码
<script language="javascript">
<!--
var xmlhttp;
function sub(id){
if(window.XMLHttpRequest){
xmlhttp =new XMLHttpRequest();
if(xmlhttp.overrideMineType){
xmlhttp.overrideMineType("text/xml");
}else if(window.ActiveXobject){
var MSXML=['Msxml2.XMLHTTP','Microsoft.XMLHTTP'];//['Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP']
for(var i=0; i<MSXML.length; i++){
try{
xmlhttp= new window.ActiveXObject(MSXML);
break;
}catch(e){}
}
}
}
if(xmlhttp==undefined||xmlhttp==null){
alert("无法创建XMLHttpRequest");
}
var vl=document.getElementById(id).value;
// xmlhttp.open("GET","User_manager?bvalue="+vl,true);
// alert("41");
xmlhttp.open("POST",encodeURI("User_manager"),true);//对传的参数进行URL编码,可防止一些乱码问题。
xmlhttp.onreadystatechange=callback;
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");/charset=UTF-8.一定要加。不加就会就会出现上文的乱码问题。
xmlhttp.send(encodeURI("bvalue="+vl+"&id="+id));
//xmlhttp.send(null);
function callback(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var message= xmlhttp.responseText;
///var doxml=xmlhttp.responseXML;
var button= document.getElementById(id);
alert("41");
alert(message);
button.value=message;
}
}
}
}
2 jsp 部分页面:
<input type="button" id="<s:property value='id' />" name="state" value="<s:property value='stateString'/>" onclick="sub(this.id)"></td> //这是要动态改变的按钮。
3,后台servlet。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String value=request.getParameter("bvalue");
String id=request.getParameter("id");
总结,现在很多人纠结于中文乱码问题,其实只要全站用了utf-8编码,不建议用GBK(转码很头疼),还有Javascript也要注意编码统一(utf-8)。基本不会出现乱码问题。传参数的时候建议使用POST方式。这也容易引起乱码.而且他参数长度也有限制。要传大量参数的时候,一定要用POST方式。
问题:我全站都是使用utf-8编码,不过在用ajax向servlet传参数的时候,firfox显示正常,IE8出现乱码。
部分源码如下:ajax(js)代码
<script language="javascript">
<!--
var xmlhttp;
function sub(id){
if(window.XMLHttpRequest){
xmlhttp =new XMLHttpRequest();
if(xmlhttp.overrideMineType){
xmlhttp.overrideMineType("text/xml");
}else if(window.ActiveXobject){
var MSXML=['Msxml2.XMLHTTP','Microsoft.XMLHTTP'];//['Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP']
for(var i=0; i<MSXML.length; i++){
try{
xmlhttp= new window.ActiveXObject(MSXML);
break;
}catch(e){}
}
}
}
if(xmlhttp==undefined||xmlhttp==null){
alert("无法创建XMLHttpRequest");
}
var vl=document.getElementById(id).value;
// xmlhttp.open("GET","User_manager?bvalue="+vl,true);
// alert("41");
xmlhttp.open("POST",encodeURI("User_manager"),true);//对传的参数进行URL编码,可防止一些乱码问题。
xmlhttp.onreadystatechange=callback;
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");/charset=UTF-8.一定要加。不加就会就会出现上文的乱码问题。
xmlhttp.send(encodeURI("bvalue="+vl+"&id="+id));
//xmlhttp.send(null);
function callback(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var message= xmlhttp.responseText;
///var doxml=xmlhttp.responseXML;
var button= document.getElementById(id);
alert("41");
alert(message);
button.value=message;
}
}
}
}
2 jsp 部分页面:
<input type="button" id="<s:property value='id' />" name="state" value="<s:property value='stateString'/>" onclick="sub(this.id)"></td> //这是要动态改变的按钮。
3,后台servlet。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String value=request.getParameter("bvalue");
String id=request.getParameter("id");
总结,现在很多人纠结于中文乱码问题,其实只要全站用了utf-8编码,不建议用GBK(转码很头疼),还有Javascript也要注意编码统一(utf-8)。对传的参数用encodeURI() 进行URL编码,基本不会出现乱码问题。传参数的时候建议使用POST方式。这也容易引起乱码.而且他参数长度也有限制。要传大量参数的时候,一定要用POST方式。
部分源码如下:ajax(js)代码
<script language="javascript">
<!--
var xmlhttp;
function sub(id){
if(window.XMLHttpRequest){
xmlhttp =new XMLHttpRequest();
if(xmlhttp.overrideMineType){
xmlhttp.overrideMineType("text/xml");
}else if(window.ActiveXobject){
var MSXML=['Msxml2.XMLHTTP','Microsoft.XMLHTTP'];//['Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP']
for(var i=0; i<MSXML.length; i++){
try{
xmlhttp= new window.ActiveXObject(MSXML);
break;
}catch(e){}
}
}
}
if(xmlhttp==undefined||xmlhttp==null){
alert("无法创建XMLHttpRequest");
}
var vl=document.getElementById(id).value;
// xmlhttp.open("GET","User_manager?bvalue="+vl,true);
// alert("41");
xmlhttp.open("POST",encodeURI("User_manager"),true);//对传的参数进行URL编码,可防止一些乱码问题。
xmlhttp.onreadystatechange=callback;
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");/charset=UTF-8.一定要加。不加就会就会出现上文的乱码问题。
xmlhttp.send(encodeURI("bvalue="+vl+"&id="+id));
//xmlhttp.send(null);
function callback(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var message= xmlhttp.responseText;
///var doxml=xmlhttp.responseXML;
var button= document.getElementById(id);
alert("41");
alert(message);
button.value=message;
}
}
}
}
2 jsp 部分页面:
<input type="button" id="<s:property value='id' />" name="state" value="<s:property value='stateString'/>" onclick="sub(this.id)"></td> //这是要动态改变的按钮。
3,后台servlet。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String value=request.getParameter("bvalue");
String id=request.getParameter("id");
总结,现在很多人纠结于中文乱码问题,其实只要全站用了utf-8编码,不建议用GBK(转码很头疼),还有Javascript也要注意编码统一(utf-8)。基本不会出现乱码问题。传参数的时候建议使用POST方式。这也容易引起乱码.而且他参数长度也有限制。要传大量参数的时候,一定要用POST方式。
问题:我全站都是使用utf-8编码,不过在用ajax向servlet传参数的时候,firfox显示正常,IE8出现乱码。
部分源码如下:ajax(js)代码
<script language="javascript">
<!--
var xmlhttp;
function sub(id){
if(window.XMLHttpRequest){
xmlhttp =new XMLHttpRequest();
if(xmlhttp.overrideMineType){
xmlhttp.overrideMineType("text/xml");
}else if(window.ActiveXobject){
var MSXML=['Msxml2.XMLHTTP','Microsoft.XMLHTTP'];//['Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP']
for(var i=0; i<MSXML.length; i++){
try{
xmlhttp= new window.ActiveXObject(MSXML);
break;
}catch(e){}
}
}
}
if(xmlhttp==undefined||xmlhttp==null){
alert("无法创建XMLHttpRequest");
}
var vl=document.getElementById(id).value;
// xmlhttp.open("GET","User_manager?bvalue="+vl,true);
// alert("41");
xmlhttp.open("POST",encodeURI("User_manager"),true);//对传的参数进行URL编码,可防止一些乱码问题。
xmlhttp.onreadystatechange=callback;
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");/charset=UTF-8.一定要加。不加就会就会出现上文的乱码问题。
xmlhttp.send(encodeURI("bvalue="+vl+"&id="+id));
//xmlhttp.send(null);
function callback(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var message= xmlhttp.responseText;
///var doxml=xmlhttp.responseXML;
var button= document.getElementById(id);
alert("41");
alert(message);
button.value=message;
}
}
}
}
2 jsp 部分页面:
<input type="button" id="<s:property value='id' />" name="state" value="<s:property value='stateString'/>" onclick="sub(this.id)"></td> //这是要动态改变的按钮。
3,后台servlet。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String value=request.getParameter("bvalue");
String id=request.getParameter("id");
总结,现在很多人纠结于中文乱码问题,其实只要全站用了utf-8编码,不建议用GBK(转码很头疼),还有Javascript也要注意编码统一(utf-8)。对传的参数用encodeURI() 进行URL编码,基本不会出现乱码问题。传参数的时候建议使用POST方式。这也容易引起乱码.而且他参数长度也有限制。要传大量参数的时候,一定要用POST方式。
相关文章推荐
- Ajax 传中文参数乱码问题(Post和Get方式)
- JSP中,AJAX使用POST方式提交中文乱码问题解决
- JSP中,AJAX使用POST方式提交中文乱码问题解决
- Jsp 中get方式传递参数乱码问题
- ajax学习笔记---解决浏览器缓存和中文乱码问题
- ajax 学习笔记之二 POST GET方式提交数据
- 【2015/4/25】JSP学习笔记4---JSP的ession+中文乱码问题
- Struts2 学习笔记 —— 10 —— Action接收参数时的中文乱码问题
- servlet的生命周期、解决乱码的方式和get方式提交与post方式提交的区别 学习笔记
- JSP、AJax中文乱码问题解决,escape(), encodeURI(), encodeURIComponent(),js对参数连续两次调用 encodeURI(String) 方法
- JSP页面post和get方式提交请求,请求参数出现中文乱码
- Jmeter学习中遇到问题(一):请求参数有中文,post传过去显示乱码
- Servlet学习笔记—request获得参数中文乱码问题解决
- struts2学习笔记----------struts2.1.6接收中文请求参数乱码问题
- AJAX+JSP GET与POST方式参数传递的应用
- tomcat发布项目 ajax方式post请求返回数据中文乱码问题(Eclipse中tomcat正常)
- JSP中解决中文乱码问题 对于post有效 对于get请求方式无效。
- 利用jquery实现Ajax技术,post方式传值中文乱码问题的解决办法。
- jsp get方式请求参数中包含中文乱码问题解决
- spring mvc 访问不同的目录下的jsp视图及处理POST请求参数中文乱码问题