浅析onsubmit校验表单时利用ajax的return false无效问题

前几天,在校验一个表单数据用到ajax时,遇到 return false 无效问题,以下就是对这个问题进行了分析介绍,需要的朋友可以参考下
 
复制代码 代码如下:

/**
 * 表单提交校验
 **/
function onSubmit(){
    if($('#name').val().length<2){
        alert("名称请不少于两个汉字");
        return false;
    }
    var t = new Date().getTime();
    $.ajax({
        type: "POST",
        url: "/users/checkrepeat/",
   data: "name=" + $('#name').val() + "&time=" + t,
        success:function(res){
            if(res == 'exists'){
                alert("名称已存在,请修改.");
                return false;
            }
        }
    });
}

问题原因:
1. ajax时return false 的function与onsubmit()不是同一个函数;
2. 在ajax执行时,async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会 继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)。

修改后的代码:

复制代码 代码如下:

/**
 * 表单提交校验
 **/
function onSubmit(){
    if($('#name').val().length<2){
        alert("名称请不少于两个汉字");
        return false;
    }   
    var flag = true;
    var t = new Date().getTime();
    $.ajax({
        type: "POST",
        async:false,  // 设置同步方式
        cache:false,
        url: "/users/checkrepeat/",
   data: "name=" + $('#name').val() + "&time=" + t,
        success:function(res){
            if(res == 'exists'){
                alert("名称已存在,请修改.");
                flag = false;
            }
        }
    });
    if(!flag)
        return false;

时间: 2024-12-10 20:57:53

浅析onsubmit校验表单时利用ajax的return false无效问题的相关文章

浅析onsubmit校验表单时利用ajax的return false无效问题_jquery

复制代码 代码如下: /** * 表单提交校验 **/function onSubmit(){    if($('#name').val().length<2){        alert("名称请不少于两个汉字");        return false;    }    var t = new Date().getTime();    $.ajax({        type: "POST",        url: "/users/check

onsubmit 校验表单时利用 ajax 的 return false 无效问题

前几天,在校验一个表单数据时用到ajax时,遇到 return false 无效问题. /** * 表单提交校验 **/ function onSubmit(){ if($('#name').val().length<2){ alert("名称请不少于两个汉字"); return false; } var t = new Date().getTime(); $.ajax({ type: "POST", url: "/users/checkrepeat

javascript将异步校验表单改写为同步表单_javascript技巧

同步表单校验的缺点 响应错误信息时,需要重新加载整个页面(虽然有缓存,客户端仍然需要通过http协议对比每个文件是否有更新,以保持文件最新) 服务器响应错误以后,用户之前所输入的信息全部丢失了,用户需要从头开始填写(部分浏览器帮我们缓存了这些数据) 异步校验表单的初衷 提升用户体验 最大化减少网络请求,减轻服务器压力 下面我们看一个常见的异步表单校验(校验工号在后台是否存在,存在为有效工号) 校验工号 复制代码 代码如下: var BASE_PATH = '${rc.contextPath}';

Ajax提交表单时验证码自动验证 php后端验证码检测_php实例

本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码. 1.前端代码 index.html <!DOCTYPE html> <html> <head> <title>验证码提交自验证</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta htt

Ajax提交表单时验证码自动验证 php后端验证码检测

本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码. 1.前端代码 index.html <!DOCTYPE html> <html> <head> <title>验证码提交自验证</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta htt

submit-form表单提交后ajax异步调用另一个url

问题描述 form表单提交后ajax异步调用另一个url ... ... 提交Submit function submitForm(){ if(_finst_taskComment.value==""){ alert("请填写审批意见"); }else{ document.getElementsByTagName("form")[0].submit(); } } 另一个url如http://........ 解决方案 function submi

js校验表单后提交表单的三种方法

本篇文章主要是对js校验表单后提交表单的三种方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 第一种:  代码如下: <script type="text/javascript">          function check(form) {             if(form.userId.value=='') {                 alert("请输入用户帐号!");                 form.us

标签-php 无刷新提交表单时,怎样修改原页面中的label的值?

问题描述 php 无刷新提交表单时,怎样修改原页面中的label的值? 在原页面index.html中,使用了来进行无刷新提交表单. 其中index.html中有一个label 提交时的action页面是form.php 当提交成功时,想在form.php中把index.html中的label的值设为 "提交成功", 这怎么实现啊? 解决方案 1.你使用的是ajax提交的话,提交成功后$(label的id或者class).html("提交成功"); 2.使用的是原生

js校验表单后提交表单的三种方法总结

作者: 字体:[增加 减小] 类型:转载 时间:2014-02-28 本篇文章主要是对js校验表单后提交表单的三种方法进行了总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 第一种: 复制代码 代码如下: <script type="text/javascript">          function check(form) {           if(form.userId.value=='') {                 alert("请输入