请问jquery如何用ajax与struts2交互
研究了一个晚上,摸不着头脑,找大家帮忙……
之前与servlet交互的时候,ajax的url指向servlet。
现在在学struts2,用struts2 url应该指向哪里啊? xxx.action吗?
jquery的post代码,url这样写对吗?
- JScript code
var url = "login.action";$( "#info" ).html( "登陆中..." );$.post( url, { userName: userName, userPwd: userPwd }, loginCallback );
struts.xml 不知道login的配置有没问题
- XML code
<?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="root" extends="struts-default" namespace="/root"> <action name="index"> <result name="success">/WEB-INF/pages/index.jsp</result> </action> <action name="login" class="net.mjrg.webstruts2ajax.actions.LoginAction" method="login"> <result name="success">/WEB-INF/pages/ok.jsp</result> <result name="fail">/WEB-INF/pages/index.jsp</result> </action> </package></struts>
Action类里如何获取ajax传来的值,如何把处理完的数据返回给ajax的回调函数,能返回xml吗?Action类应该怎么写啊
[解决办法]
一般都是Action类通过Getter方法获得注入的值
[解决办法]
struts2 你学了多久?看看马士兵视频吧。
你配置了 命名空间 namespace="/root" 那么你的action路径就是 /root/login.action.
当然 你也可以把参数写在url里面,/root/login.action?username=XXX&password=YYYY
能看到信息就这么多
[解决办法]
晕,发完了才想起来,root前要不要 /,上面的路径不行话,去掉开始的斜线试一下,或者
/项目名/root/login.action
[解决办法]
页面可以这样去配置:
$.ajax({
url: "login.action",
data: "userName="+userName+"&password="+password, type: "POST",
success: function(data){
alert(data);//data就是action处理后返回的信息
}
});
struts的配置文件可以这样配置
<action name="login" class="net.mjrg.webstruts2ajax.actions.LoginAction" method="login">
</action>
在action中的login方法代码可以这样去写:
首先在action类中要有两个属性来接收页面传过来的userName和password,并且生成get和set方法
public void login(){
HttpServletResponse response = null;
String result = "";
try {
response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");
response.setContentType("text/plain");
//这里处理你登录操作
result = "登录成功!";
response.getWriter().print(result);//将结果传到页面中 这里你可以组织你想要的数据格式来进行传递到页面
} catch (Exception e) {
result = "登录失败!";
try {
response.getWriter().print(result);
} catch (IOException e1) {
}
}
[解决办法]
struts.xml[action:name]!methodname.action
[解决办法]
<script type="text/javascript">
$(function() {
var ajaxFormOption = {
target :'#ajaxreq', // 指定更新目标
beforeSubmit :showRequest, // 设置预处理回调函数
success :showResponse, // 设置请求成功回调函数
clearForm :true // 请求完成后清空表单
};
$('#myForm').ajaxForm(ajaxFormOption);
});
function showRequest(formData, jqForm, options) {
var queryString = $.param(formData);
alert('About to submit:\n\n' + queryString);
return true;
}
function showResponse(responseText, statusText) {
alert('status:' + statusText + '\n\nresponseText:\n' + responseText + '\n\nThis is the output.');
}
</script>
这个是我的 用的jQuery的ajax