这期我们来讲一讲AJXA在jspAjx前端网页中的使用
AJXA有什么用
页面不用刷新即可实现数据的跳转,不刷新整个页面,只刷新区别,有效利用带宽,例如浏览器搜索时输入关键字自动补充
只输入一个字就可以自动弹出完整的文本,方便用于大项目的搜索
AJXA要怎么用
首先我们要做的是连接Servlet服务器,然后设置请求头信息,再设置回调函数,判断请求响应以及服务器状态,然后发送,那么AJXA有哪些状态呢?
所有我们再调用时要判断服务器状态,如下:
var xmlhttp;
try{
xmlhttp=new ActiveObject("Microsoft.XMLHTTP");
}
catch(e){
xmlhttp=new XMLHttpRequest();
}
//连接服务器
xmlhttp.open("post","IndexServlet?str="+s,true);
//设置请求头信息
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
//设置回调函数
xmlhttp.onreadystatechange=function(){
//判断请求响应结束
if(xmlhttp.readyState==4){
//服务器正常
if(xmlhttp.status==200){
//接收响应的数据
var str = xmlhttp.responseText;
var nlist = eval(str);
var nstr = "<table border='1' align='center'>";
//遍历集合
for(var i=0;i<nlist.length;i++){
nstr+="<tr onmouseover='over(this)' onmouseout=out(this);>";
nstr += "<td>";
nstr += nlist[i].ntitle;
nstr += "</td>";
nstr+="</tr>"
}
nstr += "</table>";
//赋值到div
document.getElementById("d").innerHTML=nstr;
}
}
}
//发送
xmlhttp.send(null);
服务器端定义方法:
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("来了");
String s = req.getParameter("str");
if(s==null) {
s = "";
}
System.out.println("接收:"+s);
ArrayList<News> nlist = new NewsDao().getByLike(s);
String str = JSON.toJSONString(nlist);
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
out.print(str);
out.flush();
out.close();
}