`

Struts2 + jQuery 实现ajax (二) 回调函数

阅读更多

情景描述:

     利用Struts2 + jQuery 实现ajax时候,如何获取返回值的信息来正确的提示用户。例如给某个电影打分rating,每个用户只能对一个电影打一次分数,如果打第二次的时候就提示用户"已经打过分了"。

1.js代码:
function ratingMovieClick(userId,num,movieId){
	if (userId == 0) {
		alert("You have to be logged in to rating !")
		return;
	}else{
		var url = "../RatingMovie.action";
		var params = {
			userId : userId,
			num : num,
			movieId : movieId
		};
		jQuery.post(url, params, callbackFun, 'json');
	}
}

function callbackFun(data) {
	alert(data);
}

 

2.配置文件:注意这里的<param name="root">result</param>这句将请求处理返回的结果带回到页面中。
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<package name="Struts2_AJAX" extends="json-default">		
		<action name="RatingMovie" class="com.action.RatingAction" method="addRatingMovie">
			<result type="json">
				<param name="root">result</param>
			</result>
		</action>
	</package>
</struts>

 

 

3.java代码:这里定义的result就是在配置文件里面定义的,这2个要一致。
public class RatingAction extends AbstractAction{
	
	private double avg_rating ;
	private int count;
	private String result;
	
	private static String CALL_BACK_1 = "You have ratinged !";
	private static String CALL_BACK_2 = "Thanks for rating !";
	
	private IRatingService ratingService;
	private IMovieService movieService;
	
	/**
	 * check the records.
	 * @param obj1
	 * @param obj2
	 * @return
	 */
	public int checkRelatedTableRecord(long obj1, long obj2){
		if(ratingService == null){
			count = getRatingService().getRecordRating(obj1, obj2);
		}else{
			count = ratingService.getRecordRating(obj1, obj2);
		}
		return count;
	}
	
	public String addRatingMovie(){
		int record = this.checkRelatedTableRecord(userId, movieId);
		if(record > 0){
			this.result = CALL_BACK_1;
			return "success";
		}else{			
			Related related = new Related();
			related.setType(Related.TYPE_RATING_MOVIE);
			related.setObj1(userId);
			related.setObj2(movieId);
			related.setDegree(num);
			related.setCreated(new Date());
			related.setModified(new Date());
			ratingService.addRating(related);
			avg_rating = ratingService.getAvgRating(Related.TYPE_RATING_MOVIE, movieId);
			Movie movie = movieService.getMovieById(movieId);
			movie.setRating(new Float(avg_rating));
			movieService.updateMovie(movie);
			this.result = CALL_BACK_2;
			return "success";
		}
	}
		
	public void setRatingService(IRatingService ratingService) {
		this.ratingService = ratingService;
	}

	public void setMovieService(IMovieService movieService) {
		this.movieService = movieService;
	}

	public String getResult() {
		return result;
	}

	public void setResult(String result) {
		this.result = result;
	}	
}

 

    这样当record > 0时,数据库里面已经有记录的时候,就this.result = CALL_BACK_1;return "success"; 这里的result就会赋值成"You have ratinged !",这样在回调函数中就可以拿到这个字符串了。这里的返回值只能是"success",我试过好几个都会报错!

 

下面是某个参考某论坛上的信息:http://www.iteye.com/topic/560638

 一、准备一个JSP页面用于提交ajax请求,这里我使用了JQuery的$.getJSON(url,params,function callback(data))函数提交ajax请求到指定url,并且携带参数params,最后用一个回调函数callback处理请求返回结果data;

二、一个处理请求的Action类,并在struts.xml文件中做相应配置:写一个action类处理ajax请求数据,并将返回结果封装成一个JSONObject对象返回给请求页面。同时在struts.xml中配置对应action,指明其返回类型为json并使其package的extends为json-default,并将要返回请求页面的数据放在名为root的param中,如<param name="root">result</param>。

三、接受请求返回结果:使用JS的eval方法将返回结果data转换成JSON对象,并处理返回结果。

$.getJSON(url,params,function callback(data){   
        // convert to json object   
        var user = eval("("+data+")");//   
           
           
        $("#result").each(function(){   
            $(this).html('welcome ,' + user.name);   
            });   
        });   
    }   
public String login() throws Exception {   
           
        Map map = new HashMap();   
        map.put("name", user.getLogName());   
        map.put("password",user.getPassword());   
        JSONObject obj = JSONObject.fromObject(map);   
           
           
        result = obj.toString();   
           
        return SUCCESS;   
    }  

 

 

分享到:
评论

相关推荐

    struts2+json+jquery实现ajax数据的存取

    - **jQuery处理响应**:前端接收到响应后,jQuery自动将JSON数据解析为JavaScript对象,然后可以通过回调函数处理这些数据,比如更新页面元素。 - **DOM更新**:利用jQuery提供的DOM操作方法,将接收到的数据插入到...

    Struts2 + jQuery 实现ajax.txt

    这段代码中,`clickButton`函数会在按钮被点击时触发,通过jQuery的`post`方法向服务器端发送请求,并指定回调函数为`callbackFun`,用于处理服务器返回的JSON数据。 **3. 处理Ajax请求的后端逻辑** 接下来,我们...

    struts2+jquery实现ajax

    该方法接受多个参数,如URL(指向Struts2 Action的URL)、类型(GET或POST)、数据(要发送到服务器的数据,如果有的话)和回调函数。回调函数通常包括`success`、`error`和`complete`,分别在请求成功、失败和完成...

    struts2+ajax+jquery

    jQuery的$.ajax()方法可以创建一个Ajax请求,其参数包括URL、请求类型(GET或POST)、数据、回调函数等。例如: ```javascript $.ajax({ url: "actionName.action", // Struts2 Action的URL type: "POST", data:...

    Struts2+jQuery+ajax+mySql实现省市二级联动

    在jQuery中,$.ajax()函数用于发送异步请求,参数包括URL、类型(GET或POST)、数据、回调函数等。在省市联动的例子中,我们可能需要发送一个GET请求,携带当前选中的省份ID,服务器则返回对应的城市列表。 至于...

    struts2 + jquery +ajax 登录验证

    3. 在Ajax的success回调函数中,接收到服务器返回的验证结果,如果成功则更新页面状态,例如隐藏登录表单,显示欢迎信息;如果失败,则在相应位置显示错误提示。 4. 在Struts2的Action中,接收前端发送的用户名和...

    Struts2+Jquery实现ajax并返回json类型数据

    最后,在成功回调函数中,我们可以解析接收到的JSON数据并根据需要更新页面。例如,如果我们接收到一个包含用户信息的JSON数组,可以遍历并显示这些信息: ```javascript success: function(response) { var users...

    使用struts2+JQuery实现的简单的ajax例子

    在这个简单的Ajax例子中,我们将探讨如何整合Struts2和jQuery来实现页面无刷新的数据更新。 首先,我们需要在项目中引入Struts2和jQuery的相关依赖。Struts2通常通过Maven或Gradle添加依赖库,包括核心库、struts2-...

    Struts2+jQuery(不用JSON)实现局部刷新

    - **jQuery的AJAX请求**:使用jQuery的$.ajax()方法,设置URL为Struts2的Action路径,成功回调函数内解析响应内容并更新DOM。 5. **示例代码**: - Struts2 Action代码可能如下: ```java public class ...

    struts2+jquery执行ajax并返回json类型数据(源码)

    4. **jQuery的Ajax回调**:定义一个成功的回调函数,当Ajax请求成功时,这个函数会被调用。这里,你可以解析返回的JSON数据,并使用jQuery操作DOM,将数据展示在页面上。 5. **运行与测试**:将项目导入Eclipse,...

    struts2+jquery+ajax+servlet

    这通常涉及使用`$.ajax()`函数发送请求,以及在success回调中处理服务器返回的数据。 而在“jQuery+Ajax+Struts2”的例子中,Struts2 Action作为Ajax请求的终点,处理业务逻辑并返回结果。Struts2的配置文件...

    Struts2+JSON+JQuery实现简单的验证

    5. **JQuery验证**:在Ajax的success回调函数中,接收到服务器返回的JSON数据后,根据返回的“success”或“error”判断验证结果。如果验证失败,显示错误信息;如果成功,可以继续进行提交或者跳转到其他页面。 6....

    struts2.1.8+json+jquery1.3实现ajax

    5. 数据处理:在jQuery的success回调函数中,可以使用`JSON.parse()`将JSON字符串解析为JavaScript对象,然后利用这些数据动态修改页面元素,实现无刷新更新。 6. 错误处理:同时,也要处理可能出现的错误,如网络...

    Struts2+Ajax实现的用户登录

    在Ajax回调函数中,JavaScript会接收到服务器的响应,然后根据响应结果更新页面状态。例如,如果验证成功,可以显示欢迎信息,如果失败,则显示错误提示。 Sprint框架在这里可能用于管理服务层组件,如用户服务类,...

    struts2+json+ajax整合例子(导入即可运行,附带详细教程)

    这个例子中,`success`回调函数会接收到Struts2返回的JSON数据,并将其解析,然后更新HTML页面。 4. **详细教程**:提供的教程可能涵盖从安装环境(如MyEclipse和Tomcat)、创建Struts2项目、配置Struts2、编写...

    Struts2整合jQuery实现Ajax功能.doc

    总结来说,Struts2整合jQuery实现Ajax功能,可以让前端和后端之间进行无缝通信,提供更加动态的用户体验。通过使用jQuery简化Ajax操作,开发者可以专注于业务逻辑而不是繁琐的异步请求处理。同时,Struts2的Action...

    Struts2整合jQuery实现Ajax功能

    然后,`jQuery.post()` 发送请求到 'getKeyExist' 这个 Action,待后台验证完成后,回调函数 `callbackFun` 会接收到响应数据并处理,如显示对勾或红叉。 通过这种方式,Struts2 结合 jQuery 实现的 AJAX 功能可以...

    struts+jquery+ajax无刷新验证用户名是否存在

    5. **前端响应**:在Ajax的success回调函数中,解析服务器返回的数据。根据"success"字段的状态,向用户显示相应的提示信息。如果用户名可用,可以显示“用户名可用”;如果已被占用,显示“用户名已存在”。 6. **...

    SSH2+JQUERY+ajax+sqlserver数据库

    jQuery中的$.ajax()函数是实现Ajax的核心工具,通过它我们可以定制请求参数,如URL、请求类型(GET或POST)、数据格式(JSON、XML等)以及成功和错误回调函数。 **SQL Server数据库**: SQL Server是由微软公司开发...

Global site tag (gtag.js) - Google Analytics