Jquery 的异步提交
JSP
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="jslib/verify1.js"></script>
<script type="text/javascript" src="jslib/jquery.js"></script>
<title>add data</title> </head>
<body>
<form action="/add.do" method="get">
<table >
<tr>
<td style="text-align:right">id :</td>
<td><input name="id" type="text" id="id" onblur="verify()" /> <span id="result"></span> </td>
</tr>
<tr>
<td style="text-align:right" > password :</td>
<td><input name="pwd1" type="password" /></td>
</tr>
<tr>
<td style="text-align:right"> confirm pwd:</td>
<td><input name="pwd2" type="password" onblur="verify1()" /> <span id="pwd"></span> </td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="确定" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form> </body>
</html>
JSfunction verify(){
var timestamp = (new Date()).valueOf();
var jqueryObj = $("#id");
var id = jqueryObj.val();
$.get("ajax.do?id="+id+"&t="+timestamp,null,callback);
}function callback(data) {
var resultObj = $("#result");
resultObj.html(data);
}
后台的JAVAprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try{
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String id = req.getParameter("id");
if("123".equals(id)){
System.out.println(id);
out.println("ID已经存在!");
} else {
out.println("ID不存在!");
}
} catch(Exception e){
e.printStackTrace();
}
}
现在有个问题,我想让ID存在的时候不能提交,还让显示ID以存在,在不存的情况下才可以提交from表单。
现在无论什么情况都可以提交表单。
怎么改,谢了。
JSP
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="jslib/verify1.js"></script>
<script type="text/javascript" src="jslib/jquery.js"></script>
<title>add data</title> </head>
<body>
<form action="/add.do" method="get">
<table >
<tr>
<td style="text-align:right">id :</td>
<td><input name="id" type="text" id="id" onblur="verify()" /> <span id="result"></span> </td>
</tr>
<tr>
<td style="text-align:right" > password :</td>
<td><input name="pwd1" type="password" /></td>
</tr>
<tr>
<td style="text-align:right"> confirm pwd:</td>
<td><input name="pwd2" type="password" onblur="verify1()" /> <span id="pwd"></span> </td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="确定" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form> </body>
</html>
JSfunction verify(){
var timestamp = (new Date()).valueOf();
var jqueryObj = $("#id");
var id = jqueryObj.val();
$.get("ajax.do?id="+id+"&t="+timestamp,null,callback);
}function callback(data) {
var resultObj = $("#result");
resultObj.html(data);
}
后台的JAVAprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try{
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String id = req.getParameter("id");
if("123".equals(id)){
System.out.println(id);
out.println("ID已经存在!");
} else {
out.println("ID不存在!");
}
} catch(Exception e){
e.printStackTrace();
}
}
现在有个问题,我想让ID存在的时候不能提交,还让显示ID以存在,在不存的情况下才可以提交from表单。
现在无论什么情况都可以提交表单。
怎么改,谢了。
解决方案 »
- 关于跟随鼠标移动的问题
- innerHTML数据操作
- setTimeout导致页面重复提交
- 怎样设置正正则的multiline属性
- 关于在html中使用xml数据岛的性能问题(绝对有分!)
- 在JavaScriptt中打開一個.pdf文件為什麼會導致IE發生錯誤?
- 如何在JavaScript中用Request["AAA"]得到AAA的值?
- 键入A-Z(大小写均可)为什么onkeydown或onkeyup得到的event.keyCode都是229?
- 在线等待:请问关于判断checkbox数组长度的问题。
- 使用WebBrowser控件,怎么才能把打印出来的头部的页数、和底部的文件地址去掉?急用,
- 非法字符检测显示
- 获取页面实际大小
var resultObj = $("#result");
resultObj.html(data);
if(data='ID以存在'){
return false;
} else {
return true;
}
}<input type="submit" value="确定" onclick="return callback()" />我这么加的一个,不好使。
不知道为什么?
<script type="text/javascript" src="jslib/jquery.js"></script>
调整位置,顺序不对
var resultObj = $("#result");
resultObj.html(data);
if(data=='ID以存在'){//判断用== or !=
return false;
} else {
return true;
}
}
<input type="submit" value="确定" onclick="return callback()" />这写的有问题?
if(data=='ID以存在'){//ID已经存在!后台返回的,你的写错误
return false;
} else {
return true;
}
var resultObj = $("#result");
resultObj.html(data);
if(data=='ID以存在'){
return false;
} else {
return true;
}
}
<input type="submit" value="确定" onclick="return callback()" />我这么写哪有问题啊?还是可以提交
function callback(data) {
var resultObj = $("#result");
resultObj.html(data);
if(data=='ID以存在'){
alert(data);
return false;
} else {
alert(data);
return true;
}
}我加了个alert 在点提交的时候,根本取不到值了。
所以每次都能提交
用这种方式不行啊,怎么才能限制表单提交啊
等待高人。。
汗~~~~~~
你后台返回的是“ID已经存在!”,你比较的是“ID以存在”;他们相等么
你干脆就返回true和false或是1/0if(data==0){
return false;
} else {
return true;
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try{
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String id = req.getParameter("id");
if("123".equals(id)){
System.out.println(id);
out.print("0");
//out.println("ID已经存在!");//这里是“ID已经存在!”,你在js中的是“data=='ID以存在'”;少了几个字符,你自己看看;已经--以 | “!”号;而println带换行符,你无论怎么比较也不行的
} else {
//out.println("ID不存在!");
out.print("1");
}
} catch(Exception e){
e.printStackTrace();
}
}
var timestamp = (new Date()).valueOf();
var jqueryObj = $("#id");
var id = jqueryObj.val();
$.get("ajax.do?id="+id+"&t="+timestamp,null,callback);
}function callback(data) {
var resultObj = $("#result");
resultObj.html(data);
if (data == "0" || data == 0) {//jquery的ajax不支持返回值return true/false,它本身返回有jquery对象
alert("不能提交");
} else {
$("form")[0].submit();
}
} <form action="/add.do" method="get">
<table >
<tr>
<td style="text-align:right">id :</td>
<td><input name="id" type="text" id="id" onblur="verify()" /> <span id="result"></span> </td>
</tr>
<tr>
<td style="text-align:right" > password :</td>
<td><input name="pwd1" type="password" /></td>
</tr>
<tr>
<td style="text-align:right"> confirm pwd:</td>
<td><input name="pwd2" type="password" onblur="verify1()" /> <span id="pwd"></span> </td>
</tr>
<tr>
<td colspan="2">
<input type="button" value="确定" onclick="verify()"/>//用button,不要submit;
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form>
我现在彻底崩溃,已经改了,还是不好使。
//定义用户名校验的方法
function verify(){
var timestamp = (new Date()).valueOf();
var jqueryObj = $("#id");
var id = jqueryObj.val();
$.get("ajax.do?id="+id+"&t="+timestamp,null,callback);
}function callback(data) {
var resultObj = $("#result");
resultObj.html(data);
if(data=='0'){
return false;
} else {
return true;
}
}
try{
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
String id = req.getParameter("id");
if("123".equals(id)){
System.out.println(id);
out.print("0");
} else {
out.print("1");
}
} catch(Exception e){
e.printStackTrace();
}
还是能提交
function callback(data) {
var resultObj = $("#result");
resultObj.html(data);
if(data=='0'){
alert(data); //这个地方我点提交的时候为什么值取不到?
return false;
} else {
alert(data); //这个地方我点提交的时候为什么值取不到?
return true;
}
}
<input name="id" type="text" id="id" onblur="verify()" />第一光标移开的时候能得到 data
可是下面的Input提交的时候确实提示undefind
<input type="submit" value="确定" onclick="return callback()"/>
难道这么写本质上就是个错误?