`
to_zoe_yang
  • 浏览: 138939 次
  • 性别: Icon_minigender_2
  • 来自: 01
社区版块
存档分类
最新评论

AJAX中URL的参数带中文

 
阅读更多
package action;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class AddPerson extends ActionSupport {

	public String add() {
		 String name = ServletActionContext.getRequest().getParameter("name");
		 String age = ServletActionContext.getRequest().getParameter("age");
		 String add = ServletActionContext.getRequest().getParameter("add");
		 System.out.println("name:"+name);
		 try {
				name = URLDecoder.decode(name, "UTF-8");
				age = URLDecoder.decode(age, "UTF-8");
				add = URLDecoder.decode(add, "UTF-8");
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			System.out.println("name:" + name);
			System.out.println("age:" + age);
			System.out.println("add:" + add);
				return this.SUCCESS;
	}
}

 今天朋友让帮忙处理乱码的问题,具体的操作为:当在页面选择某项执行修改操作,将弹出一个修改信息对话框,里面可能会输入中文,当点击提交按钮后,通过Javascript中国的AJAX通信,给后台Struts2中的Aciton传递信息进行处理。

其实这么做已经有问题了,应该直接使用Struts传递,但是因为之前是别人写的,就这么传,那也只能继续这么写,不然项目要改的太多~~(管理太混乱了)

很显然,传给Action的参数出现了乱码~

其实很简单,前台得到后需要进行编码,后台再进行解码。

以为Url中中文是需要进行编码的。

 

我就自己写了测试的代码,

 

前台页面如下:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/thickbox_plus.js"></script>
<script type="text/javascript" src="js/myfunction.js"></script>

<link rel="stylesheet" type="text/css" href="css/thickbox.css"/>

<title>Insert title here</title>
</head>
<body>

Name:<input type="text" id="name"></input>
<br/>
Age:<input type="text" id="age"></input>
<br/>
Address:<input type="text" id="address"></input>
<br/>
<input type="button" value="Add person" onclick="submit()"></input>

</body>
</html>

提交相应的javascript代码 ,这里需要使用encodeURI进行编码,而且要执行两次,因为是测试,也就不管反馈数据了。

 

function submit() {
	var name = $("#name").val();
	var age = $("#age").val();
	var add = $("#address").val();

	var url = "toAdd.action?name=" + name + "&age=" + age + "&add=" + add;
	url = encodeURI(url);
	url=encodeURI(url); 
	alert("URL:" + url);
	$.get(url);

	}

 

后台的Action如下:

 

package action;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class AddPerson extends ActionSupport {

	public String add() {
		String name = ServletActionContext.getRequest().getParameter("name");
		String age = ServletActionContext.getRequest().getParameter("age");
		String add = ServletActionContext.getRequest().getParameter("add");
		System.out.println("name:" + name);
		try {
			name = URLDecoder.decode(name, "UTF-8");
			age = URLDecoder.decode(age, "UTF-8");
			add = URLDecoder.decode(add, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		System.out.println("name:" + name);
		System.out.println("age:" + age);
		System.out.println("add:" + add);

		return this.SUCCESS;
	}
}

 

 

 

name:%E4%BD%A0%E5%A5%BD
name:你好
age:么
add:不dsf2

 

经测试,中文得以正常在后台显示。

 

分享到:
评论

相关推荐

    jquery.js(可以在ajax中传输中文参数)

    ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8", 修改了jquery.js,添加了charset=utf8之后ajax就能传输文佬参数过去后台

    lotus domino AJAX js获取url中的中文参数的方法

    lotus domino AJAX js获取url中的中文参数的方法

    extjs 前后台交互参数出现中文乱码问题的解决方法

    在使用myeclipse过程中,我使用ajax同步请求传递参数到后台却出现中文乱码,这是我解决问题的代码,希望对您有所帮助

    AJAX中文乱码问题探讨及解决

    AJAX中文问题分为两大类: 1)发送路径中的参数有中文,在服务器段接收参数值是乱码 例如: var url=”a.jsp?name=小李”; xmlHTTP.open (“post”,url,true); 解决办法: 利用javascript的提供的escape()或...

    AJAX中文乱码PHP中完美解决方法

    最近在做一个项目,遇到AJAX中文乱码问题,经过一个下午的努力终于完美... AJAX的中文乱码可以大概分为两中,第一种是向服务器端发送中文参数时(xmlhttp.open(“getpost”,url,true)),服务器端接收到的为乱码,这个也

    escape函数解决js中ajax传递中文出现乱码问题

    本文实例讲述了escape函数解决js中ajax传递中文出现乱码问题,分享给大家供大家参考。具体方法如下: 一、问题描述: 本来网页特效中的escape()是将中文按iso-8859-1字符集进行url编码的,那样通过 request....

    java 页面url传值中文乱码的解决方法

    本节讲的是ajax 的URL参数中有中文值,传到服务端,在用request.getParameter()方法,得到的常常会是乱码。

    jQuery 1.6 API 中文版

    jQuery.ajax( url, [ settings ] ) 返回: jqXHR 执行一个异步的HTTP(Ajax)的请求。 version added: 1.5jQuery.ajax( url, [ settings ] ) url一个用来包含发送请求的URL字符串。 settings一个以"{键:值}...

    关于Ajax请求中传输中文乱码问题的解决方案

    今天遇到一个问题,有关ajax 请求中传输中文,遇到乱码的问题。 如下代码: function UpdateFolderInfoByCustId(folderId, folderName, custId) { $.ajax({ type: "Post", contentType: "application/x-...

    有关Ajax中get和post的使用问题

    缓存:当每次访问的url相同,客户端直接读取本地缓存里面的内容,即使后台数据变化前台也不会有变化; 解决方法:在?后面链接一个num=【随机数Math.random()】或者num=【时间戳new Date().getTime()】,’1....

    php+AJAX传送中文会导致乱码的问题的解决方法

    //如果传送参数是直接赋予的,就会产生乱码! 复制代码 代码如下:... //如果val的值为中文,则产生乱码 //解决方法很简单:使用javascript中的escape(string) 函数 复制代码 代码如下:http_request.open(“POS

    STRUTS+AJAX+JSP 请求到后台乱码问题解决方法

    在AJAX请求URL之前 把参数进行encodeURI()转码。 如: 代码如下: var fileName=document.getElementById(“filePath”).value; if(null!=fileName){ //alert&#40;fileName&#41;; //进行转码 不然后台会乱码 ...

    prototype 中文参数乱码解决方案

    在使用portotype,调用ajax方法时出现乱码,此时,获取页面中加入 可以试试;; Page.Response.Charset = “gb2312”; 如果不奏效,有人提供另外解决方案: 代码如下: request: function(url) { this.url = url; this....

    [完整][中文][WEB安全测试].(美)霍普.扫描版.pdf

    8.2 以编程方式更改参数 169 8.3 使用POST模仿表单输入 170 8.4 捕获和保存Cookie 172 8.5 检查会话过期 173 8.6 测试会话固定 175 8.7 发送恶意Cookie值 177 8.8 上传恶意文件内容 179 8.9 上传带有恶意名称的文件 ...

    SEO编程PHP中文版

    3.4.5 将带两个参数的URL进行重写数字化 3.4.6 重写多关键词URL地址 3.4.7 建立链接工厂 3.4.8 分页与URL重写 3.4.9 重写图像和流媒体 3.5 重写没有解决的问题 3.6 最后的警告 3.7 小结 第4章 内容重定向和...

    jquery对ajax的支持介绍

    1.三个方法 1.1.load方法 //作用:将服务器返回的数据直接添加到符合要求的dom对象上 //相当于 obj[removed] = 服务器返回的数据 用法: $... //b, 如果有中文参数值,load方法已经帮我们做了编码处理。 例子: 代码如下:

    在Ajax中使用get和post所遇到的问题及解决办法

    缓存:当每次访问的url相同,客户端直接读取本地缓存里面的内容,即使后台数据变化前台也不会有变化; 解决方法:在?后面链接一个num=【随机数Math.random()】或者num=【时间戳new Date().getTime()】,’1....

    JQuery的Validation插件中Remote验证的中文问题

    charset=utf-8”, 加入到ajax请求的参数中,结果这次居然不起作用了。 多次观察Fiddler结果,发现无效后,只好打开JQuery.Validation.js寻求答案了。 在remote的代码中,我发现: 代码如下: … var data = {}; data...

    ExtAspNet_v2.3.2_dll

    -ExtAspNet支持原生的AJAX,也就是说控件的属性改变在AJAX过程中会反映到页面中,但并不是所有的控件属性都支持AJAX改变。 -加载s.gif图片在本机进行,不会请求extjs.com远程资源(feedback:efrigate43,abaocoole)...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -ExtAspNet支持原生的AJAX,也就是说控件的属性改变在AJAX过程中会反映到页面中,但并不是所有的控件属性都支持AJAX改变。 -加载s.gif图片在本机进行,不会请求extjs.com远程资源(feedback:efrigate43,abaocoole)...

Global site tag (gtag.js) - Google Analytics