zoukankan      html  css  js  c++  java
  • $.ajax 异步调用

    江湖传闻,Ajax 是异步调用,自己以前确实也学习过“所谓”的异步调用,然后就开始一直这么用,也没出什么问题。。。

    今天,由于一个功能上的Bug,对Ajax的异步调用有了点新认识。

    先说一下问题由来:在前端页面上有一些输入框,有一个账号字段+身份证字段,想要对输入的账号+身份证号进行唯一性判断:原来是通过$("#idValue").change(function(){...})来实现唯一性验证的,里面的函数里有个Ajax调用。

    被测试的同事查出个Bug:不通过验证也能直接写数据库,原来我想的有些少:在账号字段输入框中输入信息后,直接点保存按钮就能直接修改了。确实想少了,还需要历练。

    随后开始对问题进行解决,原本以为挺简单的,在保存按钮的保存事件中添加对内容的验证即可,确实是挺简单的一件事,然后,就是这么一件事,耗费了将近两个小时,可就是变量值不正确:全局变量的值没有被 ajax 的回调函数进行修改,回调函数的返回值总是不正确,还试了很多通过中间变量来传值,然而,一直都没解决掉!!!!

    然后百度了“$.ajax 能操作全局变量” 然后出现了如下感人的画面:

    太感人了,第一行就看到了原因。。。

    原来ajax所谓的异步调用是ajax向后端发送了请求后,就不再等数据传回来了,而是直接执行一下的代码,这样的话,回调函数不能及时返回值,或者全局变量没有被及时修改。这也解释了一个问题,问什么后续代码执行比回调函数了执行的快,原来一切都是

    “异步调用”啊,异步调用,异步调用,异步调用。。。。说多了都是泪啊

  • 相关阅读:
    ubuntu开启SSH服务
    [FreeModbus源码分析] 1.协议简介
    minicom无法输入问题
    Redis学习sorted set数据类型
    Redis学习string数据类型
    Redis学习list数据类型
    Redis学习常用命令
    Redis学习hash数据类型
    Redis学习set数据结构
    Redis初探Redis安装
  • 原文地址:https://www.cnblogs.com/maxiaoshuai/p/5567335.html
Copyright © 2011-2022 走看看