`

jquery调用struts2,返回script/text/json格式的数据

    博客分类:
  • ajax
阅读更多
本文在ajax中调用struts2 action ,查询数据库,然后返回字符串,演示返回script,text,json类型的数据的用法


一。返回script和text时代码都一样

ajax-jquery.js
function commonAjax(oper,prod,url){
    oper.bind("change",function(){comJquery(oper,prod,url)});
    prod.bind("change",function(){comJquery(oper,prod,url)});
}
function comJquery(oper,prod,url){
			var prodId=prod.val();
	    	if(oper.val()!=''&&prod.val()!=''&&prod.val()!=0&&prod.val()!=-1){
    	   		jQuery.ajax({
					url : url,
					data : {productId : prodId},
					type : "post",
					cache : false,
					dataType : "script"或者"text",
					success:callback
					});
	    	}else{
	    		$("#company").html('');
	    	}
}

function callback(data){ 
    $("#company").html(data);
}


jsp页面调用ajax js(不管返回什么类型,调用的代码都一样)
<script type="text/javascript" src="script/jquery.js"></script>
<script type="text/javascript" src="script/json2.js"></script>
<script type="text/javascript" src="script/ajax-jquery.js"></script>

var op=$("#cbApplySubmit_changeApplyFormBO_operationId");
var pr=$("#cbApplySubmit_changeApplyFormBO_productId");   
var url="${contextPath}/assets/businessChange/ajaxGetCompany.do"; 
commonAjax(op,pr,url);   



struts2 action

private Integer productId;
private IProductMng productMng; // 通过spring注入的service

// get set

public void ajaxGetCompany() throws Exception {
		ProductBO prod = productMng.loadProduct(productId);
		Integer companyId = prod.getCompanyId();
		CompanyBO comp = productMng.loadCompany(companyId);
		String message = "事业部为:" + comp.getName();
		sendMsg(message);
	}
	
	public void sendMsg(String content) throws IOException{    
        HttpServletResponse response = ServletActionContext.getResponse();    
        response.setCharacterEncoding("UTF-8");    
        response.getWriter().write(content);    
    }    







二。返回json格式

function commonAjax(oper,prod,url){
    oper.bind("change",function(){comJquery(oper,prod,url)});
    prod.bind("change",function(){comJquery(oper,prod,url)});
}
function comJquery(oper,prod,url){
			var prodId=prod.val();
	    	if(oper.val()!=''&&prod.val()!=''&&prod.val()!=0&&prod.val()!=-1){
    	   		jQuery.ajax({
					url : url,
					data : {productId : prodId},
					type : "post",
					cache : false,
					dataType : "json",
					success:callback
					});
	    	}else{
	    		$("#company").html('');
	    	}
}

function callback(data){ 
    $("#company").html(data[0].msg);  // 因为json对象中只有一个值
// 完整写法如下
//function callback(data){
//	var buf="";
//	for(var i=0;i<data.length;i++){
//		buf+=data[i].msg;
//	}
//	$("#company").html(buf);
//} 
} 



struts2 action 需要组装json对象
import net.sf.json.JSONArray;

	public void ajaxGetCompany() throws Exception {
		ProductBO prod = productMng.loadProduct(productId);
		Integer companyId = prod.getCompanyId();
		CompanyBO comp = productMng.loadCompany(companyId);
		String message = "事业部为:" + comp.getName();
		JSONArray jsonObj = JSONArray.fromObject("[{msg:'" + message +"'}]");
		sendMsg(jsonObj.toString());
	}
	
	public void sendMsg(String content) throws IOException{    
        HttpServletResponse response = ServletActionContext.getResponse();    
        response.setCharacterEncoding("UTF-8");    
        response.getWriter().write(content);    
    }    




分享到:
评论
1 楼 hardwin 2009-11-10  
试了一下,返回的如果是纯文本,dataType 设为text,html,script都可以。而且dataType参数不设置也可以,默认是文本。在返回纯文本的情况下,最好不用script类型,结果是出的来,但是IE下会报一个错误:提示你返回的那个字符串未定义
我在找原因和解决办法,找到了再来补上

相关推荐

    struts2MVC-json

    1.访问方法http://127.0.0.1:8080/Struts2JQueryJson/ http://127.0.0.1:8080/Struts2JQueryJson/jsontest!returnMap.action 2.程序为strutsMVC的小例子,实现了通过一个url调用返回一个json格式的数据,

    jQuery+Struts1.2+JSON

    通过jQuery获取表单数据,封装到JSON对象,再把JSON对象转为字符串传到Action,接到数据后,再把JSON字符串变为JSON对象,通过JSON的键,取出数据,通过调用数据库返回数据封装在JSON,打印出数据,然后在客户端接收...

    JQuery发起ajax请求Struts2,并操作JSON数据的例子

    JQuery发起ajax请求Struts2,并操作JSON数据的例子。去除了所有的jar,否则文件太大。详见http://blog.csdn.net/littleqiang520中的博文。

    Struts2整合jquery利用json与后台交互

    NULL 博文链接:https://lianxia114112.iteye.com/blog/1195805

    JQuery+Struts2+JSON0+Spring+Hibernat+XFire整合实例

    1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、com.morningstar.utility.WSUtility为调用WebService的客户端代码,在调用这个WebService返回...

    Struts+Jquery+Ajax+Json应用实例

    Struts+Jquery+Ajax+Json应用实例,前端引入jquery,后台使用struts框架。前端js调用后台action,并将后台返回的json数据进行解析,设置web页面

    JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例

    JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例(已上传) 1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、...

    j2ee 框架 struts2 jquery ajax json 示范演示

    基于 MVC 结构的 J2EE 应用服务器框架 —— apache ...客户端 jQuery ajax 提交表单至 struts2 的 action,action 调用 model,model 生成json返回至 action,再由 action 返回 json 至客户端,并由 jQuery 解析。

    Struts2+Spring+Hibernate+Ehcache+AJAX+JQuery+Oracle 框架集成用户登录注册Demo工程

    3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录进行显示。 5.单数据源配置(兼容Tomcat和Weblogic)。 6.Hibernate...

    SSH+Ajax+JSON省市级联效果Spring+Struts+Hibernate+Jquery

    Spring+Struts+Hibernate+Jquery(AJAX)实现的省份与城市级联效果 原理:通过ajax调用后端struts的action,将返回的JSON对象数组解析载入页面。

    ajax调用java传送json的小例子

    主要是用到jquery的ajax,java中的hibernate4的调用mysql数据和struts2地址重定向,并把数据转换成json数据,经过html页面中的javascript调用后台数据,有添加,修改,删除,查询等简单功能,适用于有ajax初学者,...

    dangdang和smartstruts2.rar

    Struts2、JDBC+连接池(dbcp)、jQuery+Ajax、javamail、log4j、junit、MySQL 系统架构: 表现层:jQuery+Ajax、Struts2标签+OGNL 控制层:Struts2控制器,Action组件 业务层:JavaBean组件、javamail 数据访问层...

    java命名规范 开发规范

    2&gt; basePath/web/moduleName/gotoXxx.action (无需调用Service,直接跳转) 包括jQuery的Ajax方式和非Ajax方式; 包括表单提交; 参数设值的方式: 1&gt; URL参数: basePath/web/moduleName/*_*.action?entity....

    java开源包1

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    spring_MVC源码

    弃用了struts,用spring mvc框架做了几个项目,感觉都不错,而且使用了注解方式,可以省掉一大堆配置文件。本文主要介绍使用注解方式配置的spring mvc,之前写的spring3.0 mvc和rest小例子没有介绍到数据层的内容,...

    java开源包2

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    java开源包11

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

Global site tag (gtag.js) - Google Analytics