详解闭包解决jQuery中AJAX的外部变量问题


Posted in Javascript onFebruary 22, 2017

详解闭包解决jQuery中AJAX的外部变量问题

在AJAX中,我们经常都要使用外部变量,经常会多次使用,如下代码

function getCarInfo(){
      for(var i=0;i<4;i++){

        var carId = $("#carList0"+i+" #carId").val();
        var request = { 
          city: city,
          carId: carId
        };

        $.ajax({
           url:"enquiry",
          type:'post',
          data:request,
          //async: false,
          success:function(data){
            //alert(data);
            var strArr = data.split("#");
            $("#carList0"+i+" #distributorId").val(strArr[0]);
            $("#carList0"+i+" #font16").html(strArr[strArr.length-1]);
          }
        });

      }
    }

我期待的是按顺序alert(1) alert(2) alert(3) alert(4),但是实际上三次都是alert(4)

这均是由于AJAX异步导致的问题,设置同步(async: false,)就可以解决这个问题,但是随之而来的是,效率减低很多。这时可以轻松使用闭包解决问题:

function getCarInfo(){
      for(var i=0;i<4;i++){
      ((function(i){
        var carId = $("#carList0"+i+" #carId").val();
        var request = { 
          city: city,
          carId: carId
        };

        $.ajax({
           url:"enquiry",
          type:'post',
          data:request,
          //async: false,
          success:function(data){
            //alert(data);
            var strArr = data.split("#");
            $("#carList0"+i+" #distributorId").val(strArr[0]);
            $("#carList0"+i+" #font16").html(strArr[strArr.length-1]);
          }
        });
        }(i)));
      }
    }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
juqery 学习之三 选择器 可见性 元素属性
Nov 25 Javascript
js 图片随机不定向浮动的实现代码
Jul 02 Javascript
js string 转 int 注意的问题小结
Aug 15 Javascript
jQuery 取值、赋值的基本方法整理
Mar 31 Javascript
Function.prototype.apply()与Function.prototype.call()小结
Apr 27 Javascript
巧用Vue.js+Vuex制作专门收藏微信公众号的app
Nov 03 Javascript
浅谈Vue.js中的v-on(事件处理)
Sep 05 Javascript
基于twbsPagination.js分页插件使用心得(分享)
Oct 21 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
Mar 14 Javascript
Angular5给组件本身的标签添加样式class的方法
Apr 07 Javascript
详解微信图片防盗链“此图片来自微信公众平台 未经允许不得引用”的解决方案
Apr 04 Javascript
layui use 定义js外部引用函数的方法
Sep 26 Javascript
js实现PC端根据IP定位当前城市地理位置
Feb 22 #Javascript
纯JS实现轮播图
Feb 22 #Javascript
javascript 操作cookies详解及实例
Feb 22 #Javascript
jquery实现手机端单店铺购物车结算删除功能
Feb 22 #Javascript
js实现简易垂直滚动条
Feb 22 #Javascript
微信小程序 引用其他js文件实现代码
Feb 22 #Javascript
微信小程序本作用域下调用全局JS详解及实例
Feb 22 #Javascript
You might like
form自动提交实例讲解
2017/07/10 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
javascript 网页跳转的方法
2008/12/24 Javascript
使用JavaScript switch case 另类写法
2010/03/14 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
JS和函数式语言的三特性
2014/03/05 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
JS中产生标识符方式的演变
2015/06/12 Javascript
jQuery实现的简单折叠菜单(折叠面板)效果代码
2015/09/16 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
详解Javascript中new()到底做了些什么?
2018/03/29 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
利用Webpack实现小程序多项目管理的方法
2019/02/25 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
Python实现购物程序思路及代码
2017/07/24 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
python脚本当作Linux中的服务启动实现方法
2019/06/28 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
python实现秒杀商品的微信自动提醒功能(代码详解)
2020/04/27 Python
高分子材料与工程专业个人求职信
2013/12/15 职场文书
工作会议主持词
2014/03/17 职场文书
房产委托公证书
2014/04/08 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
法律进社区活动总结
2015/05/07 职场文书
民事起诉书范本
2015/05/19 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
会计试用期工作总结2015
2015/05/28 职场文书
获奖感言一句话
2015/07/31 职场文书
学生病假条范文
2015/08/17 职场文书
JavaScript 语句之常用 for 循环详解
2021/03/29 Javascript