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表单。
现在无论什么情况都可以提交表单。
怎么改,谢了。

解决方案 »

  1.   

    function callback(data) {
        var resultObj = $("#result");
        resultObj.html(data);
        if(data='ID以存在'){
         return false;
        } else {
         return true;
        }
    }<input type="submit" value="确定" onclick="return callback()" />我这么加的一个,不好使。
    不知道为什么?
      

  2.   

    <script type="text/javascript" src="jslib/verify1.js"></script>
        <script type="text/javascript" src="jslib/jquery.js"></script>
    调整位置,顺序不对
      

  3.   

    function callback(data) {
        var resultObj = $("#result");
        resultObj.html(data);
        if(data=='ID以存在'){//判断用== or !=
            return false;
        } else {
            return true;
        }
    }
      

  4.   

    还是不行啊,现在还是都可以提交
    <input type="submit" value="确定" onclick="return callback()" />这写的有问题?
      

  5.   


    if(data=='ID以存在'){//ID已经存在!后台返回的,你的写错误
    return false;
    } else {
    return true;
    }
      

  6.   

    function callback(data) {
    var resultObj = $("#result");
    resultObj.html(data);
    if(data=='ID以存在'){
    return false;
    } else {
    return true;
    }
    }
    <input type="submit" value="确定" onclick="return callback()" />我这么写哪有问题啊?还是可以提交
      

  7.   


    function callback(data) {
        var resultObj = $("#result");
        resultObj.html(data);
        if(data=='ID以存在'){
         alert(data);
         return false;
        } else {
         alert(data);
         return true;
        }
    }我加了个alert 在点提交的时候,根本取不到值了。
    所以每次都能提交
    用这种方式不行啊,怎么才能限制表单提交啊
    等待高人。。
      

  8.   


    汗~~~~~~
    你后台返回的是“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();
            }
               
        }
      

  9.   

    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" || 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>
      

  10.   


    我现在彻底崩溃,已经改了,还是不好使。
    //定义用户名校验的方法
    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();
            }
    还是能提交
      

  11.   


    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()"/>
    难道这么写本质上就是个错误?
      

  12.   

    看这个,jquery不要返回你的值了。返回了也接收不到,你看了上面12#的回复就知道了