第一种:通过使用form表单(隐藏域)
第二种:通过ajax提交,传递的少量参数
Jquery AJAX提交表单有两种方式,一是url参数提交数据,二是form提交(和平常一样在后台可以获取到Form表单的值)。在所要提交的表单中,如果元素很多的话建议用第二种方式进行提交。
form提交
新建两个页面:
1、show.jsp:调用ajax,将表单中的数据发送给ajax.jsp页面。
2、ajax.jsp:获取show.jsp页面传递的表单数据,并返回结果。
两个页面的编码格式要设置为GBK:
1
|
<%@ page contentType=
"text/html;charset=GBK"
%>
|
show.jsp页面的重点部分:
1、添加对 jquery-1.3.2.min.js 的引用:
1
|
<script type=
"text/javascript"
src=
"jquery-1.3.2.min.js"
></script>
|
2、设置表单的id,在调用ajax的方法时要用到。一般通过表单的id来submit();
3、设置一个div,用于显示ajax.jsp页面返回的结果
1
|
<div id=
"ajaxDiv"
></div>
|
4、增加一个按钮,用来调用ajax,这里使用onclick事件来提交表单
1
|
<input type=
"button"
onClick=
"doFind();"
value=
"调用一下ajax"
>
|
5、增加调用ajax的函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
function
doFind(){
$.ajax({
cache:
false
,
type:
"POST"
,
url:
"ajax.jsp"
,
data:$(
'#ajaxFrm'
).serialize(),
async:
false
, //不同步
error:
function
(request) {
alert(
"发送请求失败!"
);
},
success:
function
(data) {
$(
"#ajaxDiv"
).html(data);
}
});
}
|
ajax.jsp页面的源代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<%@ page contentType=
"text/html;charset=GBK"
%>
<%
String userName = request.getParameter(
"UserName"
);
if
(userName!=
null
){
userName =
new
String(userName.getBytes(
"ISO-8859-1"
),
"utf-8"
);
}
String returnString =
""
;
returnString=
"你好,"
+ userName;
out.print(returnString); //输出的结果显示到<div id= "ajaxDiv" ></div>
%>
|
jquery ajax提交表单从action传值到jsp
jsp页面:
代码如下:
1
2
3
4
5
6
7
8
9
|
var
clientTel = $(
"#clientTel"
).val();
var
activityId = $(
"#activityId"
).val();
$.ajax({
type :
"post"
,
url :
"/arweb/reserve/saveCode.action"
,
data :
"clientTel="
+clientTel+
"&activityId="
+activityId , //url中添加参数传递
success:
function
(text){$(
"#randomCode"
).val(text);},
error:
function
(text) {alert(
"对不起,用户ID不存在,请输入正确的用户ID"
);}
});
|
acion类:
代码如下:
1
2
3
4
5
6
7
|
HttpServletResponse res = ServletActionContext.getResponse();
res.reset();
res.setContentType(
"text/html;charset=utf-8"
);
PrintWriter pw = res.getWriter();
pw.print(random);
pw.flush();
pw.close();
|
pw.print(random);这里的random就是action要向jsp传的值,在jsp中,success: function(text)这里的text就是接收从action传过来的值。
第三种:url+参数传递,controller层都可以使用request或者方法的形参中定义同名参数接收
第四种:pojo对象的传递,controller可以在方法的形参中定义pojo对象,这样jsp页面标签的name属性名要和pojo对象的属性名一致,pojo才可以接收到
第五种:简单类型的传递,jsp页面标签的name属性名和controller方法形参的变量名一致,可以接收,类似于第三种
第六种:数组的传递,controller方法形参使用数组名称要和jsp页面的标签的name属性值一致
第七种:集合list传递(通常都是批量提交数据时使用一个或多个list<pojo>), controller方法形参不能直接接收list,一般使用包装类型Vo(Vo中包含list属性,例如:list<pojo>,Vo可以包装复杂的查询条件,多个表对象都包含进去),jsp页面标签的name属性名要与Vo中的list<UserCustom> userlist的对象的UserCustom中属性名一致,jsp页面标签name的写法为name=userlist.[${status.index }].name