日期:2014-05-17  浏览次数:20766 次

请问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"