Ajax开发过程中提交获取数据的乱码问题

2016-02-19 22:31 33 1 收藏

图老师小编精心整理的Ajax开发过程中提交获取数据的乱码问题希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - Web开发 】

  这两天在继续我的Ajax之旅。一直在抓紧步伐。

  前天试验使用Ajax提交form表单到服务器,获取form信息内容出现了乱码,一时无法解决。网上有结论说是application/x-www-form-urlencoded编码的原因,我估计也是。正在寻找解决之道。

  大家一起讨论讨论。

  补充:通过在后台用UTF8转码的方式可以解决中文乱码问题。这种方法针对form表单提交,编码在服务器完成。代码如下:
  form.jsp:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

%@ page contentType="text/html; charset=gb2312"%
html
head
meta http-equiv="Content-Type" content="text/html; charset=gb2312"
title表单提交测试/title
script language="javascript"
var http_request = false;
function send_request(url,poststr) {//初始化、指定处理函数、发送请求的函数
http_request = false;
//开始初始化XMLHttpRequest对象
if(window.XMLHttpRequest) { //Mozilla 浏览器
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {//设置MiME类别
http_request.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject) { // IE浏览器
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) { // 异常,创建对象实例失败
window.alert("不能创建XMLHttpRequest对象实例.");
return false;
}
http_request.onreadystatechange = processRequest;
// 确定发送请求的方式和URL以及是否同步执行下段代码
http_request.open("POST", url, true);
http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
http_request.send(poststr);
}
// 处理返回信息的函数
function processRequest() {
if (http_request.readyState == 4) { // 判断对象状态
if (http_request.status == 200) { // 信息已经成功返回,开始处理信息
alert(http_request.responseText);
} else { //页面不正常
alert("您所请求的页面有异常。");
}
}
}

function form_submit() {
var f = document.form1;
var username = f.username.value;
var password = f.password.value;
var poststr = "";
if(username=="") {
window.alert("用户名不能为空。");
f.username.focus();
return false;
}
if(password=="") {
window.alert("密码不能为空。");
f.password.focus();
return false;
}
poststr = "username="+encodeURI(f.username.value)+"&password="+f.password.value;
send_request('form_handle.jsp',poststr);
return false;
}
/script
/head

body
form name="form1" method="post" action="" onsubmit="return form_submit()"
table width="300" border="0" cellspacing="4" cellpadding="0" style=" font-size:12pt;"
tr
td width="74" height="25"用户名:/td
td width="220" height="25"input name="username" type="text" id="username" size="20"/td
/tr
tr
td height="25"密码:/td
td height="25"input name="password" type="password" id="password" size="20"/td
/tr
tr align="center"
td height="25" colspan="2"input type="submit" name="Submit" value="提交"/td
/tr
/table
/form
/body
/html

  form_handle.jsp:

%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %
%
String username = new String(request.getParameter("username").getBytes("ISO-8859-1"),"UTF8");
String password = request.getParameter("password");
System.out.println("用户名:"+username);
System.out.println("密码:"+password);
out.println(username+"|"+password);
%

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  另外,有些网友反应生成包含中文内容的XML文档返回到客户端也会出现乱码问题。建议将XML文档的编码方式改成UTF8试试看。

来源:http://www.tulaoshi.com/n/20160219/1628467.html

延伸阅读
  在java里有3种异常类型: 1.检查型异常,这样的异常继承于Excetpion,就是在编译期间需要检查,如果该异常被throw,那么在该异常所在的method后必须显示的throws,调用该method的地方也必须捕获该异常,否则编译器会抛出异常.ejb里的RemoteException是一个这样的异常. 2.运行时异常,就是在运行期间系统出现的异常,该类异常继承于RuntimeExcept...
标签: Web开发
网页制作Webjx文章简介:AJAX中文问题分为两大类. AJAX中文问题分为两大类: 1)发送路径中的参数有中文,在服务器段接收参数值是乱码 例如: varurl="a.jsp?name=小李"; xmlHTTP.open("post",url,true); 解决办法: 利用javascript的提供的escape()或encodeURI()方法 ...
标签: Web开发
使用javascript进行异步提交数据比直接使用现成的AJAX控件效率高很多(我只使用过ajax.net) 实验发现可以提交大容量数据——实验到40K左右 function doSubmit() { ....... var urlParameter="cfg="+urlPara1 +"&type="+vkeytype +"&starttime="+vstarttime +"&endtime="+vendtime +"&am...
标签: Web开发
Ajax内部交流文档一、使用Ajax的主要原因  1、通过适当的Ajax应用达到更好的用户体验;  2、把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。     二、引用  Ajax这个概念的最早提出者Jesse&...
标签: Web开发
Ajax内部交流文档一、使用Ajax的主要原因 1、通过适当的Ajax应用达到更好的用户体验; 2、把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。 二、引用 Ajax这个概念的最早提出者Jesse James Garrett认为: Ajax是A...

经验教程

365

收藏

68
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部