利用AJAX是想JSP页面的单个控件的后台校验

本文介绍了一个使用JSP实现的菜单添加功能,其中包括了前端表单验证和后端数据重复检查的过程。通过JavaScript实现了对分类名称和排序字段的即时验证,并利用Ajax技术向服务器发送请求检查数据是否已存在。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xml:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ include file="../../../../common/common-js.jsp"%>
<%@ include file="../../../../common/common-taglibs.jsp"%>
<%@ include file="../../../../common/common-css.jsp"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'addMenu.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<style type="text/css">
a {
text-decoration: none;
}

a:hover {
text-decoration: underline;
}

tr {
background-color: #D8E4F2;
}
</style>
<script type="text/javascript">
function addMenu11() {
var common_d0020 = document.getElementById("d0020").value;
var common_d0030 = document.getElementById("d0030").value;
if (common_d0020.replace(/^\s*|\s*$/g, '') == "") {
alert("分类名称不能为空,请重新输入!");
} else if (common_d0030.replace(/^\s*|\s*$/g, '') == "") {
alert("排序不能为空,请重新输入!");
} else if (common_d0020.length > 50) {
alert("分类名称长度不超过50,请重新输入!");
} else if (common_d0030.length > 20) {
alert("排序长度超过20,请重新输入!");
} else {
document.forms[0].action = "{ctx}/menuCategoriesManager/addMenu.do";
document.forms[0].submit();
}

}

function checkNull(temp) {
if (temp.replace(/^\s*|\s*$/g, '') == "") {
return false;
} else {
return true;
}
}

function checkAjax(str){
//定义一个变量用于存放XMLHttpRequest对象
var xmlhttp;
//定义一个变量用于存放 从服务器返回的响应结果
var responseContext="";
//页面控件值
var td02 = document.getElementById("d0020").value;
var td03 = document.getElementById("d0030").value;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
responseContext = xmlhttp.responseText;
if(checkNull(responseContext)){
alert(responseContext);
if(str==2){
document.getElementById("d0020").focus();
}else if(str==3){
document.getElementById("d0030").focus();
}
}
}
}
//向指定的URL建立服务器的调用
var url="";
if(str==2){
url="{ctx}/menuCategoriesManager/checkData.do?tempd0020="+td02;
}else{
url="{ctx}/menuCategoriesManager/checkData.do?tempd0030="+td03;
}
xmlhttp.open("POST",url,true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.send();
}


</script>
</head>

<body>
<form id="updateMenuForm"
action="${ctx}/menuCategoriesManager/addMenu.do" method="post">

<table style="border-collapse: collapse;">

<tr style="background-color: #D8E4F2;">
<td style="vertical-align: middle; text-align: center;">
分类名称
</td>
<td>
<input type="text" name="d0020" id="d0020" style="width: 100px"
οnblur="checkAjax(2)" />
<input type="hidden" name="d0910" id="d0910" value="1"
style="width: 100px" />
</td>
</tr>
<tr style="background-color: #D8E4F2;">
<td style="vertical-align: middle; text-align: center;">
排序
</td>
<td>
<input type="text" name="d0030" id="d0030"
οnkeyup="this.value=this.value.replace(/\D/g,'')"
onafterpaste="this.value=this.value.replace(/\D/g,'')"
style="ime-mode: disabled" style="width: 100px"
οnblur="checkAjax(3)" />
</td>
</tr>
<tr style="background-color: #D8E4F2;">
<td align="right" align="right" colspan="2">
<input type="button" name="addMenu" value="添加"
οnclick="addMenu11()" />
&nbsp;&nbsp;
<input type="button" name="" value="返回"
οnclick="javascript:history.back(-1);" />
</td>
</tr>
</table>
</body>
</html>

action里的方法:

/**
* 校验输入不重复
*
* @return
*/
public String checkData() throws Exception {
try {
String reponseText = "";
String d0020 = "";
HttpServletRequest request2 = ServletActionContext.getRequest();
String d0020value = request2.getParameter("tempd0020");
String d0030 = request2.getParameter("tempd0030");
if (d0020value != null) {
d0020 = new String(d0020value.getBytes("ISO8859-1"), "GB2312");

}
int size = 0;
if (null != d0020 && !"".equals(d0020)) {
size = menucategoriesService.checkAjax(d0020);
if (size != 0) {
reponseText = "分类名称重复,请重新输入";
}
}
if (null != d0030 && !"".equals(d0030)) {
size = menucategoriesService.checkAjax3(d0030);
if (size != 0) {
reponseText = "排列序号重复,请重新输入";
}
}
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println(reponseText);
out.flush();
out.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值