最近有一个功能就是在客户添加或者修改的时候能够动态的根据所填写的内容与数据中的数据进行比较提供预警信息,但是不影响客户的增加和修改,只是简单的提示一下.
因为业务数据涉及的对象比较的多.等客户提交后再来比较的话,很难达到这样的目的,所以我就选择了AJAX这个东西,果然很不错,处理起来一切都那么的美妙.
首先在要处理的地方第一两个javascript函数:
function getmount()//统计取值
{
var url = "servlet/SelectCountServlet?&A="+document.all("A").value+"&B="+document.all("B").value;
//A和B都是刚刚填入的值
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.onreadystatechange = processRequest;
req.open("GET", url, true);
req.send(null);
}
//将返回的XML格式的数据赋给页面的隐藏变量.
function processRequest() {
if (req.readyState == 4) {
if (req.status == 200) {
var Head = req.responseXML.getElementsByTagName("Head");
document.all('HeadValue').value=Head[0].firstChild.data;
var Collect = req.responseXML.getElementsByTagName("Collect");
document.all('CollectValue').value=Collect[0].firstChild.data;
} else {
document.all('HeadValue').value=-1;
document.all('CollectValue').value=-1;
}
}
}
接着就可以定义一个servlet来处理上面的请求:
主要的方法是用xml格式返回数据流
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
// String state = request.getParameter("state");
StringBuffer sb = new StringBuffer("<value>");
sb.append("<A>").append(A_value).append("</A>").append("<B>").append(B_value).append("</B>");
sb.append("</value>");
PrintWriter out = response.getWriter();
out.write(sb.toString());
out.close();
就这么简单.A_value,B_value可以利用javaBean去从数据库中取值.接下来来的一些处理就不用过多介绍了,只是简单的在页面提交的时候判断一下,弹出一个警告对话框就ok了.
其实这样做的好处多多