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

本文在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);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值