星期天一个人捣鼓个人网站的事情,read8686.com,如果哪位开发者又欢迎大家一起探讨,在文章的有我的微信

就是这样的一个注册的页面,其实我要实现的功能是什么啊,就是在用户注册的时候判断在数据库里面是否存在相同的邮箱和用户名,如果这样的就允许进行注册,注册我用到了两个接口,一个是在注册之前去判断是否存在相同的用户名,和邮箱,另外的一个接口是将用户所有输入的信息传递到后台

按照这个逻辑,我应该首先是判断是否存在相同的用户名:

         function isAlreadyHaveUser(email, loginname) {var num=1;var param = {"email" : email,"loginname" : loginname}$.ajax({url : localhostPaht + projectName+ "/userinfo/isalreadyuser",type : 'post',data : JSON.stringify(param),dataType : 'json',contentType : 'application/json;charset=utf-8',success : function(data) {num=data.count;},error : function(error) {console.log('接口不通' + error);num=0;}});return num;}

这个便是我的调用接口用到的代码了,这个是用来判断的,我们可以注意到的是在这个代码里面是存在一个返回值的,并且这个返回值是在调用了接口之后才能进行确定,但是我在使用的使用,也就是点击注册的时候:

         $("#registbtn").on("click",function() {var loginname = $("#loginname").val();var email = $("#email").val();var phone = $("#phone").val();var password = $("#password").val();var confirmpwd = $("#confirmpassword").val();if (!dataValidate(password, confirmpwd)) {layer.alert("两次密码输入不一致");} else {var params = {"loginname" : loginname,"email" : email,"phone" : phone,"password" : password};if (isAlreadyHaveUser(email,loginname) == 0) {$.ajax({url : localhostPaht+ projectName+ "/userinfo/userregister",type : 'post',data : JSON.stringify(params),async:false,dataType : 'json',contentType : 'application/json;charset=utf-8',success : function(data) {layer.alert(data.msg,function() {window.location.href = "login.html";});},error : function(error) {console.log('接口不通'+ error);}});} else {layer.alert("注册失败");}}});

这个时候我点击注册按钮的时候进行的操作:

isAlreadyHaveUser(email,loginname) == 0    关键是这个条件,始终为false

我想后台应该返回为0 的,为什么这个判断条件始终为false,我console.log(isAlreadyHaveUser(email,loginname)),输出的结果是undefined,为什么是没有定义,很奇怪其实也不奇怪,这个里面有用到的ajax的同步和异步的问题,之前一直听说ajax的同步和异步,但是也没有遇到过具体的情景,其实是这样的我们知道ajax在执行代码 时候并没有顺序性,也就是说可能我在调用第一个接口还没有结束,这样地方就开始判断,当然这个时候是没有返回值的,所以是没有定义。

关键就是我们需要在第一个接口调用的之后执行结束然后再去执行其他的函数,这个就涉及到同步,所谓的同步就是等我做完这件事情之后然后再去做其他的事情,但是异步是我这事情还没做完,我就要做其他的事情了。

ajax默认的是异步的,也就是这件事情还没做完,就可以去执行其他的js代码了,我们应该在等第一个接口调用完毕之后再去调用第二个接口,也就是我们需要让第一个的ajax同步执行

AJAX中根据async的值不同分为同步(async = false)和异步(async = true)两种执行方式;

我在第一个接口中添加属性:async=false,这样就实现了第一个ajax执行接口有返回值之后去执行第二个ajax

同步异步的问题我是这样理解的,希望对有所帮助

下面是我的微信号,希望和大家一起学习交流:

ajax同步,异步简单的介绍相关推荐

  1. ajax同步异步问题

    2019独角兽企业重金招聘Python工程师标准>>> 今天工作中有碰到了ajax的同步异步问题,写代码的时候不注意有时候让自己很苦恼. 先说一下问题吧,前端使用bootstrap的 ...

  2. AJAX 同步 异步 区别

    AJAX 同步 异步 区别 异步处理: 我们通过事件触发到 ajax,请求服务器,在这个期间无论服务器有没有响应,客户端的其他代码一样可以运行.(JS代码加载到当前AJAX的时候会把页面里所有的代码停 ...

  3. jq ajax同步异步,详解JQuery中Ajax的同步与异步

    说到ajax同步与异步,可能很多同学对它都不是很了解,接下来我们就Ajax的同步与异步作个简单的介绍.同步:提交请求->等待服务器处理->处理完毕返回这个期间客户端浏览器不能干任何事.异步 ...

  4. Ajax同步异步执行顺序问题

    今天项目中碰到一个问题,大概是这样的:JS中一个方法A需要先给隐藏域赋值,然后另一个方法B再从这个隐藏域取值,获取到这个值后给接口传参然后请求数据.也就是说这两个方法需要有执行顺序,A方法先执行,然后 ...

  5. 关于ajax同步异步处理循环遍历及push时发生的疑问

    今天写了一个简单的ajax请求,其中因为一些需求 渲染过程没有写在回调函数内,要在外部访问遍历后的数组进行渲染,第一次写时图片如下图 此时console.log(arr)打印出来的内容是一个长度为0, ...

  6. ajax 同步异步true,async: false 实现AJAX同步请求 ( $.ajax同步/异步(async:false/true) )(示例代码)...

    虽然说ajax用来执行异步请求的比较多,但有时还是存在需要同步执行的情况的. 比如:我需要通过ajax取执行请求以返回一个值,这个值在ajax后面是需要使用到的,这时就不能用异步请求了.这时候就需要使 ...

  7. $.ajax同步/异步(async:false/true)

    虽然说ajax用来执行异步请求的比较多,但有时还是存在需要同步执行的情况的. 比如:我需要通过ajax取执行请求以返回一个值,这个值在ajax后面是需要使用到的,这时就不能用异步请求了.这时候就需要使 ...

  8. 源生ajax同步异步请求,源生JS怎样实现文件异步上传

    这次给大家带来源生JS怎样实现文件异步上传,源生JS实现文件异步上传的注意事项有哪些,下面就是实战案例,一起来看一下. 名称 文件 确定 function ajaxUploadFile() { var ...

  9. ajax同步和异步区别

    同步和异步的区别,ajax的编程步骤解:同步是指一个线程要等待上一个线程执行完才能开始执行,同步可以看做是一个单线程操作,只要客户端请求了,在服务器没有反馈信息之前是一个线程阻塞状态.异步是一个线程在 ...

最新文章

  1. C语言-动态创建二维数组
  2. 3.12 程序示例--多分类问题-机器学习笔记-斯坦福吴恩达教授
  3. ftp无法显示服务器web文件夹,Web和Ftp服务器.ppt
  4. Java泛型中的多态
  5. Codeforces Round #277 (Div. 2) A. Calculating Function 水题
  6. 董付国老师6本Python系列图书阅读指南
  7. Oracle读取log日志,使用log miner 分析oracle日志
  8. javaSE回顾---变量
  9. ironpkg下载地址
  10. 使用XAML和SharpMap渲染一幅地图
  11. PHP错误信息(errors)的屏蔽和显示-设置PHP.ini
  12. BZOJ2118[国家集训队] 墨墨的等式
  13. xp-80c打印机无法打印_6种方法解决打印机无法打印问题
  14. numpy矢量化运算
  15. cad 打开硬件加速卡_CAD如何根据已知条件设计图形
  16. 微信小程序开发者工具提示“网络连接失败”
  17. 世界三大顶级音响_世界十大名牌音响有那些
  18. Android基础入门教程——2.4.2 ListView简单使用
  19. 浮窗---创建系统浮窗(可拖动)
  20. 解决:微信小程序+Vant——使用van-grid以及van-card图片加载不出来的问题

热门文章

  1. 打造开发者的win7
  2. 解决.NET 4.0下无法直接运行.NET 2.0程序的问题
  3. 字节一实习生求助:晚上九点半在公司打游戏,被领导发现后开除,将来找工作会背调出来吗?...
  4. Prometheus监控业务指标
  5. 60 张图详解 98 个常见网络概念
  6. 不懂Redis Cluster原理,我被同事diss了!
  7. 有人说:穷学IT富搞金融!程序员究竟是不是一帮苦孩子在做?
  8. Java中的注解到底是如何工作的?
  9. 这里有最全的k8s初学者指南!!!
  10. SpringBoot 究竟是如何跑起来的?