1.封装ajax服务,ajax的url post提交,返回text数据:
function ajaxService(url){
//生成xmlhttpRequest实例
var xmlhttp=null;
if(window.XMLHttpRequest){ //Mozilla 浏览器
xmlhttp = new XMLHttpRequest();
if(xmlhttp.overrideMimeType){//设置MiME类别
xmlhttp.overrideMimeType('text/xml');
}
}else if(window.ActiveXObject){ // IE浏览器
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!xmlhttp) { // 异常,创建对象实例失败
window.alert("你使用的浏览器有问题!!");
return false;
}
//post提交url
xmlhttp.open("post",url, false);
xmlhttp.send();
//判断连接状态,如果不是200那么连接出错
if(xmlhttp.status!=200){
//网络存在问题
alert("网络存在问题,请检查网络!");
return false;
}
//得到url数据
dom=xmlhttp.responseText;
return dom;
}
2.具体的业务操作,通过学号得到学生的相关信息:
function getXsInf(){
var xh=getObject('xh_getInf').value;
var url="sz.kc_kcb.do?m=getStatus&flag=kcinf&xh="+xh;
var dom=ajaxService(url);
if(dom==null||dom==''){
return;
}
var all=dom.split('_GOOD_');
}
3.服务端处理应答,ajax访问后台的入口,通过flag来指定执行哪个方法:
public ModelAndView getStatus(HttpServletRequest request,HttpServletResponse response) {
response.setContentType("text/xml; charset=gbk");
response.setHeader("Cache-Control", "no-cache");
//得到要执行的方法
String flag=request.getParameter("flag");
//得到课程信息
if("kcinf".equals(flag)){
this.getKcInf(request, response);
}else if("getXsInf".equals(flag)){
//通过学号得到学籍
this.getXjByXh(request, response);
}
return null;
}
4.后台的具体处理,通过课程号得到课程的相关信息,并以_GOOD_进行分割:
private void getKcInf(HttpServletRequest request,HttpServletResponse response){
String kch=request.getParameter("kch");
Kc_kcb kcb=this.kc_kcbService.queryById(kch);
PrintWriter out=null;
try {
out=response.getWriter();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(out!=null){
if(kcb!=null){
if(logger.isDebugEnabled()){
logger.debug("==================="+kcb.toString());
}
out.write((kcb.getKcm()==null?"":kcb.getKcm().trim()));
out.write("_GOOD_");
out.write((kcb.getFzjsh()==null?"":kcb.getFzjsh().trim()));
}
out.flush();
//关闭流
out.close();
}
}