读书人

jquery+json+struts2+spring ajax回调

发布时间: 2012-03-12 12:45:33 作者: rapoo

jquery+json+struts2+spring ajax回调函数不执行
页面

HTML code
<body>    <div id="login">        <p id="login-top">            <fmt:message key="index.login.title" />        </p>        <p class="login-input">            <fmt:message key="index.login.userName" />            <input type="text" id="userName" />        </p>        <p class="login-input">            <fmt:message key="index.login.userPassword" />            <input type="password" id="userPassword" />        </p>        <p id="login-buttom">            <input type="button" value="登录" id="btnOk"/>            <input type="button" value="重置" id="btnCancel"/>        </p>    </div></body>


js
JScript code
$(document).ready(function() {        $("#userName").val("");    $("#userPassword").val("");    $("#btnOk").click(function() {        var url = "login.action";        var params = {            userName : $("#userName").val(),            userPassword : $("#userPassword").val()        }        $.post(url, params, function(data) {            alert("11");        },"json");    });    $("#btnCancel").click(function() {        $("#userName").val("");        $("#userPassword").val("");    });});


spring配置文件
XML code
    <bean id="jwUserAction" class="com.sj.action.JwUserAction">        <property name="jwUserService" ref="jwUserService"></property>    </bean>


struts2配置文件
XML code
    <package name="ajax" extends="json-default">        <action name="login" class="jwUserAction" method="login">            <result type="json">                <param name="contentType">text/html</param>            </result>        </action>    </package>


Action代码
Java code
public class JwUserAction extends ActionSupport {    private static final long serialVersionUID = 2495756323386561975L;    private String userName;    private String userPassword;    private int result;    private IJwUserService jwUserService;    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getUserPassword() {        return userPassword;    }    public void setUserPassword(String userPassword) {        this.userPassword = userPassword;    }    public IJwUserService getJwUserService() {        return jwUserService;    }    public void setJwUserService(IJwUserService jwUserService) {        this.jwUserService = jwUserService;    }    public int getResult() {        return result;    }    public void setResult(int result) {        this.result = result;    }    public String login() {        System.out.println("调用");        try {            JwUser jwUser = jwUserService.loginCheck(userName, userPassword);            if (jwUser != null)                result = 1;            else                result = 0;        } catch (Exception ex) {            System.out.println(ex.getMessage());            result = 0;        }        System.out.println(result);        return Action.SUCCESS;    } 



userName和userPassword已经提交到action中了,在控制台也打印出了result,但是post中定义的回调函数没有执行,在FIREBUG中也没报错

[解决办法]
探讨
回调函数在哪?你的action没有write任何东西。

[解决办法]
因为你的 private IJwUserService jwUserService是从spring容器里面拿的,你只要在
@JSON(serialize = false)
public IJwUserService getJwUserService() {
return jwUserService;
}

这样写就好了,试试吧!

读书人网 >Java Web开发

热点推荐