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

发布时间 - 2026-01-10 23:13:36    点击率:

详解闭包解决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)));
      }
    }

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


# 闭包解决jQuery中AJAX的外部变量问题  # jQuery中AJAX的外部变量使用闭包解决  # javascript  # jquery闭包概念分析  # jQuery命名空间与闭包用法示例  # jquery和js实现对div的隐藏和显示方法  # JQuery显示、隐藏div的几种方法简明总结  # JQuery实现点击div以外的位置隐藏该div窗口  # JQuery浮动DIV提示信息并自动隐藏的代码  # jquery显示和隐藏div特效实例  # JQuery DIV 动态隐藏和显示的方法  # jquery div提示框渐隐弹出与隐藏效果  # jQuery基于闭包实现的显示与隐藏div功能示例  # 的是  # 都是  # 都要  # 希望能  # 解决问题  # 谢谢大家  # 均是由  # 随之而来  # 经常会  # 解决这个问题  # 就可以  # lt  # getCarInfo  # var  # carId  # val  # request  # function  # AJAX  # jQuery 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel路由怎么定义_Laravel核心路由系统完全入门指南  实例解析angularjs的filter过滤器  Mybatis 中的insertOrUpdate操作  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  nodejs redis 发布订阅机制封装实现方法及实例代码  如何在阿里云ECS服务器部署织梦CMS网站?  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  黑客如何通过漏洞一步步攻陷网站服务器?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel如何使用Blade组件和插槽?(Component代码示例)  如何在七牛云存储上搭建网站并设置自定义域名?  如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环  如何在Tomcat中配置并部署网站项目?  python中快速进行多个字符替换的方法小结  如何用腾讯建站主机快速创建免费网站?  如何快速辨别茅台真假?关键步骤解析  微信小程序 input输入框控件详解及实例(多种示例)  Laravel如何使用Collections进行数据处理?(实用方法示例)  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  千库网官网入口推荐 千库网设计创意平台入口  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何快速搭建FTP站点实现文件共享?  Laravel Session怎么存储_Laravel Session驱动配置详解  如何挑选高效建站主机与优质域名?  Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询  详解CentOS6.5 安装 MySQL5.1.71的方法  Linux系统命令中tree命令详解  Swift中swift中的switch 语句  香港服务器网站卡顿?如何解决网络延迟与负载问题?  js实现获取鼠标当前的位置  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  JavaScript如何实现音频处理_Web Audio API如何工作?  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  如何获取上海专业网站定制建站电话?  如何用景安虚拟主机手机版绑定域名建站?  敲碗10年!Mac系列传将迎来「触控与联网」双革新  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  文字头像制作网站推荐软件,醒图能自动配文字吗?  图册素材网站设计制作软件,图册的导出方式有几种?  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  如何在建站之星绑定自定义域名?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  米侠浏览器网页图片不显示怎么办 米侠图片加载修复