本文在ajax中调用struts2 action ,查询数据库,然后返回字符串,演示返回script,text,json类型的数据的用法
一。返回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);
}