问题描述
- ajax提交数据后 ,怎么取值??
-
<script type="text/javascript"> function validate(){ //var username = $('#usernmae').val(); var username = document.getElementById("username").value; alert(username); $.ajax({ url:"register", type:"post", date:{username:username}, success:function(data){ $('#message').html(data); } });
ajax跟struts2结合,后台java代码怎么取值,如果是Jason的时候怎么取值??我在后台结果视图中实用的stream流的形式返回的result,想弄明白,ajax跟struts2之间的数据流转到底是怎么样的形式?????如果是Jason的话,应该怎么取值????有没有深入研究过的人??
解决方案
post回去就相当于表单,直接用参数就可以了。
解决方案二:
你这个问题边上好多乱七八糟的条,看的我眼晕,异步传输,直接相当于表单,就过去了,在后台直接用参数接受;你不是set/get方法了么,所以可以取得
这个参数值,之后直接完成功能,传回前台,这里有个问题,你在ajax中写的datatype是什么类型就要传回什么类型,有点废话了- - 。最后浏览器自己会
识别出这个串子的,你可以用火狐看到,希望对你有用!!!加油
解决方案三:
如果你在控制器中也就是你url对应的类中,写了setXX(),getXX()方法,那么可以直接this.XX即可.
如果没写set,get方法,那么可以 ServletActionContext.getRequest().getParameter("XX");
解决方案四:
首先你的页面代码有误data参数拼写错误。示例代码:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Welcome to BoadVedio</title>
<script type='text/javascript' src="<%=basePath%>resource/js/jquery-1.8.3.js"></script>
<script type="text/javascript">
var basePath = '<%=basePath%>';
function validate(){
var username = document.getElementById("username").value;
$.ajax({
url:basePath+"validate.action",
type:"post",
data:{username:username},
success:function(data){
var message = data.result.message;
$('#message').html(message);
}
});
}
</script>
</head>
<body>
<input type="text" name="username" id="username"/>
<input type="button" value="提交" onclick="validate();"/>
<div id="message"></div>
</body>
</html>
其次,你定义Action类包含username属性和一个map类型存放json数据。
public class ValidateAction extends ActionSupport {
private String username;
public Map<String,Object> result = new HashMap<String,Object>();
public Map<String, Object> getResult() {
return result;
}
public String execute() throws Exception {
if ("zhangsan".equals(username)) {
result.put("message", "success结果");
}
else {
System.out.println("error结果");
result.put("message", "error结果");
}
return Action.SUCCESS;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
第三,配置struts的action的result类型为json且继承json-default。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" extends="json-default">
<action name="login" class="LoginAction">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
<action name="validate" class="ValidateAction">
<result type="json" />
</action>
</package>
</struts>
按照以上步骤编写测试代码,需要导入struts2-json-plugin-2.2.3.jar。祝好!
解决方案五:
后台Action返回的result类型为json的话,在JSP页面可以直接访问Action的属性result了。
1 Action接收请求数据,只要提供对应属性的getter和setter方法。
2 Action返回结果配置成json时,继承json-default,配置result类型为json。
时间: 2024-09-13 09:32:05