jquery发送ajax请求,以及struts2的action响应请求并传回json数据的做法

-------------------jquery代码------------------

function login() {

var rem = $('#remember').val();

$.ajax({

type : 'post',  //请求的方式

url : loginURL,  //地址

datatype : "json", //参数的类型  

data : {      //参数

'checkCode' : yzm,

'username' : username,

'password' : hex_md5($("#password").val()),

'remember' : rem

},

timeout: 5000,

error: function (xmlHttpRequest, error) { //方法发生错误执行的方法

ui.error("登陆失败!");

return;

},

success : function(data) {          //方法执行成功之后执行的方法

if (data.success) {//data.success是后台定义的一个boolean类型的数据

        //if...else根据个人的需求来写              

if((!data.jsonMap.checkedUserFlag) && data.jsonMap.pwdFlag && !data.jsonMap.firstLoginFlag){

window.location = changeURL;

} else if(data.jsonMap.checkedUserFlag && !data.jsonMap.firstLoginFlag){

window.location = changeURL;

} else {

window.location = loginSuccessURL;

}

} else {

ui.error(data.msg);

randomYzm();

$("#verification_code").val("");

}

}

});

}

--------------------------------action中的回传参数----------------------------------

package com.login.action;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.login.pojo.Customer;

import com.login.service.LoginService;

import com.opensymphony.xwork2.ActionSupport;

import com.util.classes.JSONBean;

public class loginAction extends ActionSupport {

// 客户管理服务

private LoginService loginService;

public static final String TILES = "tiles";

protected String targetUrl; // 跳转的页面

// 用户名

private String username;

// 密码,旧密码

private String password;

// 验证码

private String checkCode;

// 记住用户名

private String remember;

private JSONBean root = new JSONBean(); //定义要回传的json对象,注意一定要有get,set方法

public JSONBean getRoot() {

return root;

}

public void setRoot(JSONBean root) {

this.root = root;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public String getCheckCode() {

return checkCode;

}

public void setCheckCode(String checkCode) {

this.checkCode = checkCode;

}

public String getRemember() {

return remember;

}

public void setRemember(String remember) {

this.remember = remember;

}

public String validateUser(){

HttpSession session = ServletActionContext.getRequest().getSession();

String v_code = session.getAttribute("vcode").toString();

String msg ="";

Customer dbCustomer = null;

if(!checkCode.equals(v_code)){

msg="验证码错误";

root.setSuccess(false);

root.setMsg(msg);

}else{

msg="登录成功";

dbCustomer=loginService.checkCustomerByLoginId(username);

if(dbCustomer!=null){

root.setSuccess(true);

root.setMsg(msg);

}else{

dbCustomer = loginService.checkCustomerByUsername(username);

msg="登录成功";

if(dbCustomer!=null){

root.setSuccess(true);

root.setMsg(msg);

}else{

root.setMsg("用户在系统中不存在!");

}

}

}

return "json";

}

}

jsonBean 类 中定义了 一些变量 如success,msg,jsonMap 也可以直接在action中定义

------------------------------struts.xml-------------------------------

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<package name="default" extends="struts-default,tiles-default,json-default"> <!--定义的包继承json-default-->

<action name="*" class="loginAction" method="{1}">

<result name="success">page/jsp/login.jsp</result>

<result name="tiles" type="tiles" >${targetUrl}</result>

<result name="json" type="json">    

<param name="root">root</param>

</result>

</action>

</package>

</struts>

--------------------------------对了最后记得项目中一定要有json的jar struts2-json-plugin-2.3.4.jar 版本尽量跟struts2的核心包的版本一致---------------------