ajax提交表单的一些注意事项:解释为什么return false却依然提交

问题原因:
1. ajax时return false 的function与onsubmit()不是同一个函数;
2. 在ajax执行时,async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)。
原因:逻辑没弄清楚,要将ajax设置为同步的,需要使用$.ajax,$.get默认是异步的,并且不是在回调函数内return,而是在CheckUserName函数中声明一个变量来接受回调函数的返回值,然后CheckUserName返回这个值。

var flag=false;

$.ajax({
    async:false, ////要设置为同步的,要不CheckUserName的返回值永远为false
    url: "${ctx}/register/registeremail.do",
    type: "Post",
    data: {"email" : email},
    success: function(transport){
                   if(transport==0){
                         var html;
                         document.getElementById("em").style.display="inline";
                         html="<font color=010203>恭喜您,该邮箱可以注册!</font>";
                         $("#em").html(html);
                         clearError(frm["email"]);
                        myflag=true;
                 }else{
                       addErrors(frm["email"],"对不起!该邮箱已经注册!");
                       document.getElementById("em").style.display="none";
                      flag=true;
                  }
         }
});
// alert(flag + "...邮箱...");
 if(flag){
        return false;
 }

           

时间: 2024-10-11 18:38:19

ajax提交表单的一些注意事项:解释为什么return false却依然提交的相关文章

PHP提交表单失败后保留已填写信息怎么实现?

PHP提交表单失败后如何保留已经填写的信息. PHP提交表单失败后如何保留填写的信息一些方法总结,其中最常用的就是使用缓存方式了,这种方法如果网速慢是可能出问题的,最好的办法就是使用ajax了.1.使用header头设置缓存控制头Cache-control.PHP代码:header('Cache-control: private, must-revalidate'); //支持页面回跳 2.使用session_cache_limiter方法.PHP代码:session_cache_limiter

向Django提交表单

Python的django框架,做了一个前端页面,其中有一向要求提交表单,暂且总结一下流程,有不对的地方请指正: 1.在HTML页面写表单: <form enctype="multipart/form-data" method="POST" action="{% url 'upload' %}"> {% csrf_token %} <input type="file" name="your_file

.Net模拟提交表单

2016-09-0210:49:20 以中邮速递API为服务接口,由于提交方式为表单提交,我要获取返回值来处理其他业务,所以一开始尝试采用Js后台获取返回值,但是涉及到跨域请求限制问题,那边服务端接口返回的是json而不能处理jsonp:所以开始着手考虑后台模拟提交表单: 网上开始查资料,对于后台提交表单的一些相关资料: 表单提交协议规定: 对于含文件的表单提交,要先将 HTTP 要求的 Content-Type 设为 multipart/form-data,而且要设定一个 boundary 参

ajaxSubmit 页面生成的html 中含有表单提交表单方式

$("#form_title").ajaxSubmit({ //页面生成的html 中含有表单提交表单方式 dataType: "json", success : function(obj){ lock_flag = false; if(obj.errno == 0){ lock_flag = false; layer.msg(obj.errdesc); setTimeout(function() { window.location.reload(); },2000

ajax form表单提交 input file中的文件

ajax form表单提交 input file中的文件 现今的主流浏览器由于ajax提交form表单无法把文件类型数据提交到后台,供后台处理,可是开发中由于某些原因又不得不用ajax提交文件, 为了解决这个问题我走了不少弯路: 1.用原生的 input file , 不支持ajax上传文件,你肯定会说可以用 ajax form表单上传了呀?不过我后面还要调用上传成功后用js处理一些对话框,所以这种方法排除 2.用了 uploadify 上传插件,弄出来能上传东西,结果不理想:因为不能判断上传的

ajax提交表单

ajax提交表单在项目中常用,前台无论是简单的html.jsp或者是使用了easyui框架,提交表单都会使用到ajax,extjs框架其实也是使用了ajax只不过对其进行了封装了,我们使用的时候就更固定了些. 总的来说ajax提交表单可以分为两种,一种是无返回结果的,就是将表单数据提交给后台,后台处理完就完了:另一种就是有返回结果的,后台执行成功或失败的信息需要返回到前台. 1,无返回结果的 最简单的就是$("#formid").submit();直接将form表单提交到后台. 2,有

关于ajax提交表单

今天主要是四个问题: 1.表单页面元素的获取: 2.按钮的值的获取: 3.按钮的值以变量提交: 4.表单的提交: 获取表单元素时用的是事件委托的方法.{犯的错误:1.用获取表格父级元素的方法获取,没有意识到表单的值是填在value里面的,而表格里面的值直接在th容器里填的 2.在考虑父级元素时没有考虑到它所有的容器都属于他的父级元素                                                                                   

jquery+ajax验证不通过也提交表单问题处理

这篇文章主要介绍了jquery validationEngine中使用ajax验证不通过也提交表单问题处理,需要的朋友可以参考下 validationEngine给我们为前端的表单验证减少了很大的工作量.大部分情况我们使用validationEngine验证表单的形式有几种方式: 1 使用正常的表单提交.这种情况validationEngine验证不通过是不会提交表单的. 2 使用ajax提交表单,但是没有使用ajax验证. 这种方式也比较简单,在我们使用ajax请求前检查验证是否通过就可以,例

知问前端——Ajax提交表单

本文,运用两大表单插件,完成数据表新增的工作. 一.创建数据库 创建一个数据库,名称为:zhiwen,表——user表,字段依次为:id.name.pass.email.sex.birthday.date. 本人是使用的Navicat for MySQL创建的user表, user表的结构如下: 所需的PHP文件:config.php.add.php.(本人没学过php,所以不过多解释) config.php: <?php header('Content-Type:text/html; char