表单提交前onclick使用reuturn时,ajax请求同步异步的一点注意事项
来源:互联网 发布:网络剧广告植入方案 编辑:程序博客网 时间:2024/05/21 12:33
因为会经常用到ajax提交请求判断一些信息,比如,用户账号名是否存在等等,但如果是在提交表单数据按钮的onclick时,用return check()来跳转去最后验证一下表单数据是否为空等等。需要注意一些问题。
当进行ajax请求时,如果success回调得到的结果是错误的,使用return false是没有办法返回check()函数false结果的,因为你在回调函数里,只是返回在里层的函数。于是会发现表单照样提交。比如:
function check(){ $name = $("#name").val(); $.post("check.php",{name:name},function(data){ data = JSON.parse(data); if(data.code != 200){ return false; } });}
上面的代码return false只是跳出ajax请求函数而已,并没有给check函数任何返回。
于是会想到使用临时标记变量去判断识别:例如
function check(){ $name = $("#name").val(); $flag = 0; $.post("check.php",{name:name},function(data){ data = JSON.parse(data); if(data.code != 200){ return false; }else{ flag = 1; return true; } }); if(flag === 0){ return false; } return true;}
可是这样再试,你会发现表单是不进行提交了,但是你回调数据判断正确时,你却怎么也提交不了表单!这时可以在flag判断前打印flag的值console.log(flag),发现flag=0,而不是1。
然后你仔细观察会发现在命令行里,flag的值的打印时间比ajax请求完成时间更早,这是因为 $.get/post函数默认使用的是异步通信。当请求时,会相别于主线程,再开始一个线程用于ajax请求,两个线程同时进行。
因此在这种情况下,你需要使用同步通信,只能使用$.ajax函数进行ajax请求
$.ajax({ url: "check.php", type: "POST", async: false, //同步请求 data: {name:name}, success: function(data){ data = JSON.parse(data); if(data.code != 200){ return false; }else{ flag = 1; return true; } }});
阅读全文
0 0
- 表单提交前onclick使用reuturn时,ajax请求同步异步的一点注意事项
- Struts2的Ajax表单异步方式提交表单请求
- 使用Ajax提交表单的注意事项
- ajax异步与同步提交注意事项
- ajax 表单提交和异步请求
- ajax提交异步,同步请求不同
- ExtJS4 button提交表单请求与直接ajax请求的一点小区别
- 使用AJAX异步提交表单的几种方式
- 使用AJAX异步提交表单的几种方式
- 查询条件表单使用ajax异步提交
- from表单使用ajax异步提交
- 使用AJAX异步提交图片表单
- AJAX异步提交表单
- ajax异步提交表单
- Ajax异步提交表单
- ajax异步提交表单
- ajax异步提交表单
- ajax异步提交表单。
- Cognos11中通过URL访问report的设置
- Sqlserver 2008 R2安装的盘符空间不够用的解决办法
- Cognos11第三方权限认证之OpenDJ
- iOS 和 安卓的差别
- SSAS知识回放之订单数据分析
- 表单提交前onclick使用reuturn时,ajax请求同步异步的一点注意事项
- Linux解决安装包无法找到问题Unable to locate package rar
- 阿里云服务器Tomcat无法从外部访问
- 云服务器 ECS Linux Ubuntu 主机修改主机名
- C语言文件操作函数大全
- python unittest的简单使用
- redis学习笔记——单机搭建redis
- Cognos11只需简单几步创建你的Dashboard
- 关于这一周学习Android自定义View的经验总结