详解闭包解决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 相关文章推荐
textContent在Firefox下与innerText等效的属性
May 12 Javascript
jQuery对象和DOM对象的相互转化实现代码
Mar 02 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
Aug 13 Javascript
jQuery实现购物车数字加减效果
Mar 14 Javascript
在JavaScript中正确引用bind方法的应用
May 11 Javascript
基于JS实现翻书效果的页面切换样式
Feb 16 Javascript
Javascript前端经典的面试题及答案
Mar 14 Javascript
jQuery实现菜单栏导航效果
Aug 15 jQuery
Layui tree 下拉菜单树的实例代码
Sep 21 Javascript
js布局实现单选按钮控件
Jan 17 Javascript
JavaScript原型继承和原型链原理详解
Feb 04 Javascript
JS面向对象编程基础篇(一) 对象和构造函数实例详解
Mar 03 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
phpMyAdmin 安装教程全攻略
2007/03/19 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
2016/05/23 PHP
PHP反射API示例分享
2016/10/08 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
我用的一些Node.js开发工具、开发包、框架等总结
2014/09/25 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
python列表与元组详解实例
2013/11/01 Python
python super的使用方法及实例详解
2019/09/25 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
python3中calendar返回某一时间点实例讲解
2020/11/18 Python
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
电子专业毕业生自我鉴定
2014/01/22 职场文书
投资合作协议书范本
2014/04/17 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
村干部任职承诺书
2015/01/21 职场文书
读书笔记怎么写
2015/07/01 职场文书
2016大学生暑期社会实践心得体会
2016/01/14 职场文书
2019军训心得体会
2019/06/27 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
nginx搭建NFS网络文件系统
2022/04/14 Servers