首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我的ajax查询只将最后一个值保存在循环中

在进行ajax查询时,如果你的代码只保存了最后一个值,可能是因为ajax请求是异步的,而循环是同步执行的。在循环中发起的多个ajax请求会在循环结束之前都被发送出去,但是由于异步的特性,这些请求的响应并不会立即返回,而是在后台进行处理。当循环结束后,只有最后一个ajax请求的响应返回,因此只有最后一个值被保存下来。

为了解决这个问题,你可以使用闭包或者Promise来确保每个ajax请求的结果都能正确保存。下面是两种解决方案的示例代码:

  1. 使用闭包:
代码语言:txt
复制
for (var i = 0; i < values.length; i++) {
  (function(index) {
    $.ajax({
      url: 'your_url',
      data: { value: values[index] },
      success: function(response) {
        // 在这里处理ajax请求的响应,将结果保存到合适的位置
        console.log(response);
      }
    });
  })(i);
}
  1. 使用Promise:
代码语言:txt
复制
function ajaxRequest(value) {
  return new Promise(function(resolve, reject) {
    $.ajax({
      url: 'your_url',
      data: { value: value },
      success: function(response) {
        // 在这里处理ajax请求的响应,将结果保存到合适的位置
        console.log(response);
        resolve(response);
      },
      error: function(error) {
        reject(error);
      }
    });
  });
}

var promises = [];
for (var i = 0; i < values.length; i++) {
  promises.push(ajaxRequest(values[i]));
}

Promise.all(promises)
  .then(function(results) {
    // 在这里处理所有ajax请求的结果
    console.log(results);
  })
  .catch(function(error) {
    console.error(error);
  });

以上两种方法都可以确保每个ajax请求的结果都能正确保存,你可以根据自己的需求选择其中一种方法来解决这个问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一致性哈希算法问题

大家好,又见面了,是你们朋友全栈君。...在分布缓存领域,对数据存在新增与查询,即数据通过路由算法存储在某一个节点后,查询时需要尽量路由到同一个节点,否则会出现查询未命中缓存情况,这也是与分布式服务调用领域负载算法一个不同点。...1.2 一致性哈希算法 一致性哈希算法 一致性哈希算法设计理念如下图所示: 首先将哈希映射到 0 ~ 232次方一个圆中,然后将实际物理节点IP地址或取其hash,放入到hash环中。...,引入了虚拟节点,可以设置一个哈希环中存在多少个虚拟节点,然后将虚拟节点映射到实体节点,从而解决数据分布吧均衡问题。...,比轮、加权轮、随机、加权随机算法等负载均衡算法相比,实现复杂,性能低下,运维管理复杂。

4.1K20

程序员面试必备PHP基础面试题 – 第十六天

table2 where id>200 and id<500 请尝试只写一条SQL语句,完成相应查询任务。...1、读取文件里内容,以某字符作为分割标志(使用explode()函数),分隔800000字符串,然后用500个电话号码作为,作为判断条件(使用in_array()函数)判断,是否存在于其中,存在则拿出...考虑到船长及A、B、C都很聪明,问为什么渔民C一定能猜中? 答案:偶不会,会留言说一下答案吧! 五、请用正则表达式写一个函数,验证电子邮件格式是否正确。...(每个1分)说明Ajax实现原理是什么及Json在Ajax中起什么作用?...=66% 八、我们希望开发一款扑克游戏,请给出一套洗牌算法,公平洗牌并将洗好牌存储在一个整形数组里。

47420
  • Android面试题大全

    跨进程通讯几种方式 Android中为什么子线程不能更新UI 如果不做这个校验,是不是也可以正常在子线程更新UI 但是google为什么要这样去设计呢 ViewRootImp是在onActivityCreated...为什么还需要开启消息坏 使用子线程更新UI有实际应用场景吗 Android程序运行时权限与文件系统权限区别 Android进程与线程 进程 前台进程 可见进程 服务进程(service进程) 后台进程...和之前提到一样,想重新自定义自己程序中四大组件,就必须重新实现一个类,重写这个类中抽象方法,在清单文件中注册,最后才能够正常使用。...如果存在多个广播接收者配置 priority 属性相同,则动态注册广播接收者优先级高于静态注册广播接收者。...为什么还需要开启消息坏 // 保证上述条件1成立,不就可以避免checkThread时候抛出异常了吗?为什么还需要开启消息坏?

    1.3K50

    异步,同步,阻塞,非阻塞程序实现

    如果是同步,线程会等待接受函数返回(或者轮函数结果,直到查出它返回状态和返回)。如果是异步,线程不需要做任何处理,在函数执行完毕后会推送通知或者调用回调函数。...一个讲的是消息方式,一个讲的是线程状态。 线程在同步调用下,也能非阻塞(同步轮非阻塞函数状态),在异步下,也能阻塞(调用一个阻塞函数,然后在函数中调用回调,虽然没有什么意义)。...下面,我会慢慢实现一个异步非阻塞sleep。最后利用Python特性,将callback调用方式改为yield伪同步调用。...上面的代码,如果调用次数很多,则最后一个人要等待之前所有的人阻塞结束,才能被响应。...上面的代码中,在一个while循环中timer状态。由于timer存在于wait中。所以需要把timer“提取”出来。

    7.6K10

    C语言中循环语句总结

    while坏:  for循环:  while和for循环对比: 区别:for 和 while 在实现循环过程中都有初始化、判断、调整这三个部分,但是 for 循环三个部 分⾮常集中,便于代码维护...n=0时候还能计算出一个 答: 这是因为在这段代码中使用了 do-while 循环,循环条件是 n 不为 0。...即使 n 初始为 0,循环体内代码仍然会执行一次,然后才会检查循环条件。因此,即使 n 初始为 0,cnt 也会至少增加一次,最终输出 1。...环中 continue 后代码,直接去到循环调整部分。...,来到了i++调整部分 printf("%d ", i); } return 0; } 运行结果: 对比for循环和while循环中continue对代码运行影响: 分析代码可以知道它们修改条件位置不同

    12710

    让你写出更加优秀代码!

    贾言 代码评审歪诗 窗外风雪再大 也有陪伴着你 全文字数:2000字 阅读时间:5分钟 贾言 代码评审歪诗 验幻空越重 命频异长 依轮线日简 接偶正分壮 架构师说, 用20个字描述代码评审内容...验-言 公共方法都要做参数校验,参数校验不通过明确抛出异常或对应响应码: Java Bean验证已经是一个很古老技术了, 会避免我们很多问题; 在接口中也明确使用验证注解修饰参数和返回, 作为一种协议要求调用方按验证注解约束传参...-勋 不要在循环中调用服务,不要在循环中做数据库等跨网络操作; 频-品 写每一个方法时都要知道这个方法调用频率,一天多少,一分多少,一秒多少,峰值可能达到多少,调用频率高一定要考虑性能指标,考虑是否会打垮数据库...,接口提供方要保证接口可用性,接口调用方要考虑接口不可用时应对方案; mq消息是一种解耦方法,两个系统不存在实时耦合关系。...考虑各种边界条件输出, 比如运单号查询服务, 要考虑用户输入错误运单时怎么返回, 有边界查询条件, 如果用户查询条件超过边界了, 应该返回什么; 为失败做设计,如果出问题了有降级应对方案。

    5.4K20

    JS中for循环——你可能不知道点。

    5 undefined 产生结果原因 setTimeout()函数回调属于异步任务,会出现在宏任务队列中,被压到了任务队列最后,在这段代码应该是for循环这个同步任务执行完成后才会轮到它,所以...,在node.js后端开发或者前端ajax请求时候还是比较常见。...这就是一个典型 “for 循环中存在相互依赖异步操作” 例子 例子对应伪代码: async function task () { for (let val of [1, 2, 3, 4])...对阮一峰老师的话再具体说明一下,可能有些同学还不是特别理解。...node.js后端开发-await在for循环中应用 看一段后端项目中应用await代码: //dayResult是一个查询数组 for (const item of dayResult)

    2.4K11

    大文件上传服务器:支持超大文件HTTP断点续传实现办法

    实现思路如下: 一、浏览器在上传某个文件时候,先给这个文件生成一个HASH,必须在浏览器端生成这个HASH。...不能单地依据文件名来查询文件上传记录,文件名重复性很大,文件名 + 文件尺寸组成重复性缩小,如果再加上文件修改时间,则重复性进一步缩小,如果再加上一个浏览器 ID可以进一步缩小重复性冲突。...基于上述理由,HASH计算思路如下: 首先给浏览器赋予一个ID,这个ID保存在Cookie里; 浏览器 ID+ 文件修改时间 + 文件名 + 文件尺寸 结果进行MD5来计算一个文件HASH...二、查询文件HASH 在文件上传支持,先通过文件HASH从上传服务器查询文件上传进度信息,然后从上传进度位置开始上传,代码如下: var fileObj = currentfile; var...也就是说,-1 指字符串最后一个字符,-2 指倒数第二个字符,以此类推。 end 紧接着要抽取片段结尾下标。若未指定此参数,则要提取子串包括 start 到原字符串结尾字符串。

    1.9K10

    Ajax发送PUTDELETE请求时出现错误原因及解决方案

    .而其他,根据单词并不能准确知道他们想表达意思.本文要讲并不是HTTP协议,主要是分析一下发送Ajax(异步请求)时候,为什么使用GET和POST方式发送可以接收到数据,而使用DELETE和PUT...使用Ajax发送PUT(修改)请求 我们测试使用一个更新方法,利用主键更新员工信息,使用特定PUT请求....实际上,Tomcat把请求数据(实体信息中数据)封装成一个Map(键值对形式),request.getParameter(“”)就从map中取值,而SpringMVC会把每个属性调用getParameter...方法和POST肯定是不一样,最后只能是返回.于是就出现了上面的情况....号中内容,从而实现请求.当然每次写Ajax请求时候,都需要协商method字段,便于解析. 方案二 方案二就比较简单了.只需要一个简单web.xml配置. <!

    2.2K10

    大文件上传服务器:支持超大文件HTTP断点续传实现办法

    实现思路如下: 一、浏览器在上传某个文件时候,先给这个文件生成一个HASH,必须在浏览器端生成这个HASH。...不能单地依据文件名来查询文件上传记录,文件名重复性很大,文件名 + 文件尺寸组成重复性缩小,如果再加上文件修改时间,则重复性进一步缩小,如果再加上一个浏览器 ID可以进一步缩小重复性冲突。...基于上述理由,HASH计算思路如下: 首先给浏览器赋予一个ID,这个ID保存在Cookie里; 浏览器 ID+ 文件修改时间 + 文件名 + 文件尺寸 结果进行MD5来计算一个文件HASH...二、查询文件HASH 在文件上传支持,先通过文件HASH从上传服务器查询文件上传进度信息,然后从上传进度位置开始上传,代码如下: var fileObj = currentfile; var...也就是说,-1 指字符串最后一个字符,-2 指倒数第二个字符,以此类推。 end 紧接着要抽取片段结尾下标。若未指定此参数,则要提取子串包括 start 到原字符串结尾字符串。

    1.6K10

    基于BS架构微博系统

    修改密:当用户点击修改密页面时浏览器跳转至修改密页面如图5-6所示,用户先要根据之前设置问题来填写答案,前台页面通过Ajax将用户输入答案传入后台控制器,与数据库中用户问题答案做判断...图5.11个人微博界面 5.4 好友模块 查看好友微博:通过点击页面导航栏中好友来跳转至好友微博页面,在后台控制器中先从Session中获得当前登陆用户id,传递给Service,在Service...,在Service层中调用Dao层接口和数据库中管理员账号表中查询,如果存在就返回管理员类,如果不存在,则抛出异常,异常层层上抛,在控制器层中接收,并将错误信息保存在方法返回中,在页面提示,如果用户名和密码正确...、微博、评论、回答等数据保存在Map集合中,在控制层中获取到返回数据并保存在服务器响应中,返回给前台页面使用EL表达式展示数据,如图5.23所示。...,浏览器发送请求,请求在控制器中被对应方法接收,Service中调用Dao层接口在数据库海螺表中查找所有的海螺信息,保存在List集合中,遍历List集合组装发布人用户信息,修改日期格式等,最后将组装号

    2.5K31

    京东价格保护高并发 | 七步走保证用户体验

    还以上面“图-价申请”为例,由于订单内商品价格在后端已经缓存,我们可以将商品价格按照订单维度进行合并,同一个订单下所有商品价格通过一个ajax进行请求访问。...刷新是否符合价请求进行合并,无论用户点击了多少次申请,都以一个ajax进行组合刷新结果,这样就减少了请求后端连接访问。...价系统主要维度是用户,因此我们按照用户PIN进行分库路由,以用PIN取Hash,然后取模。例如我们要分2个库,则算法hash%2。...处理慢,就有可能获取当时促销价不准确,导致用户价失败,用户体验会急剧下降。 下面我们将演示如何从有极限到无极限: ? 图 – 有极限 大家看,为什么上图是有极限呢?...由于价申请处理,业务非常复杂,我们这里采用工作流模式,以任务节点程序全自动进行处理。我们来看下,任务系统是如何演变,最后达到速战速决。 ?

    1.9K30

    难点理解&面试题问答

    3.面试问题集锦 3.1说出request里面几个常用属性 a)查询参数 args:url地址上最后面传给服务器参数 b)请求数据data:就是客户端发送给服务器原始数据(raw原始数据) c)上传文件...区别:cookie 存在浏览器,每次访问网站都会将本地保存cookies(用户个人信息)发送到网站,不安全,每个域名下cookie独立存在,互不干扰。...,同时在前端代码会生成一个csrf_token,然后当你post提交信息时,web框架会自动比对cookie里和前端form表单或ajax提交上来csrf_token,两者一致,说明是当前浏览器发起正常请求并处理业务逻辑返回响应...,那么第三方网站拿到你cookie为什么不能验证通过呢?...联想回答: 实际项目里,一对多事物关系特别多,比如一个作者可以有多本书,那本书只能是一个作者,那么这个人和书就是一对多关系,其实搞什么一对多,多对多模型,本质就是减少数据库表创建,方便数据查询

    77320

    thinkPHP+mysql+ajax实现仿百度一下即时搜索效果详解

    本文实例讲述了thinkPHP+mysql+ajax实现仿百度一下即时搜索效果。...分享给大家供大家参考,具体如下: 用过百度搜索的人应该都知道这个效果,今天用ThinkPHP+Mysql+Ajax来实现这样一个效果,首先把所有的代码都先给大家,最后再来讲解。...= 6; } //查询此省份编号中所有城市 $countyList = $County- where("pid = "....").empty(); $('.list').css('display','block'); // 坏遍历返回,并添加到li中 $(data.data).each...在视图层index.html文件中,我们利用Jquery来响应用户输入事件,然后利用Jquery操作Ajax方式来从服务器端获取与关键字匹配学校数据,并用动态添加li方式来显示到ul中。

    91840

    深度解密setTimeout和setInterval——为setInterval正名!

    为什么呢?原因是事件环中JS Stack过于繁忙原因,当排队轮到定时器callback执行时候,早已超时。...我们可以通过新建一个setTimeout结束当前重复定时器,比如执行20秒钟,超过20秒就结束。这个处理方案没有问题,只不过又多给了应用加了一个定时器,多一个定时器就多一个不确定因素。...但是在异步情况下,比如ajax(websocket不在讨论范围内),我们只有一种选择就是setTimeout,原因只有一个——天晓得这次ajax要浪多久才肯回来,这种情况下只有setTimeout...但是JS很忙,如果一直不断有task任务,那么JS永远无法进入下一个循环。JS说好累,不干活了,罢工了。...那么我们要怎样才能告诉垃圾回收算法,这些东西不要了,你拿走吧?怎么样辣鸡才能被回收给新辣鸡腾出空间呢?说到底这就是一个编程习惯问题。

    3.7K30

    易犯错误 | 十个 PHP 开发者最容易犯错误

    在上述例子,在代码执行完以后,value 仍保留在作用域内,并保留着对数组最后一个元素引用。之后与 value 相关操作会无意中修改数组中最后一个元素。...{} // 通过赋值遍历 echo implode(',', $array), "\n"; 以上代码会输出 1,2,3 1,2,3 1,2,2 你没有看错,最后一行最后一个是...常见错误 #4:在循环中执行查询 如果像这样的话,一定不难见到你 PHP 无法正常工作。...如果这样脚本在多个线程中被调用,他会有导致系统崩溃潜在危险。 因此,至关重要是,当你代码要进行查询时,应该尽可能收集需要用到,然后在一个查询中获取所有结果。...一个我们平时常常能见到查询效率低下地方 (例如:在循环中)是使用一个数组中 (比如说很多 ID )向表发起请求。

    4.5K20

    十个 PHP 开发者最容易犯错误

    在上述例子,在代码执行完以后, $value仍保留在作用域内,并保留着对数组最后一个元素引用。之后与 $value 相关操作会无意中修改数组中最后一个元素。...as $value) {} // 通过赋值遍历 echo implode(',', $array), "\n"; 以上代码会输出 1,2,3 1,2,3 1,2,2 你没有看错,最后一行最后一个是...常见错误 #4:在循环中执行查询 如果像这样的话,一定不难见到你 PHP 无法正常工作。...如果这样脚本在多个线程中被调用,他会有导致系统崩溃潜在危险。 因此,至关重要是,当你代码要进行查询时,应该尽可能收集需要用到,然后在一个查询中获取所有结果。...一个我们平时常常能见到查询效率低下地方 (例如:在循环中)是使用一个数组中 (比如说很多 ID )向表发起请求。

    2.6K50

    十个 PHP 开发者最容易犯错误

    在上述例子,在代码执行完以后, $value仍保留在作用域内,并保留着对数组最后一个元素引用。之后与 $value 相关操作会无意中修改数组中最后一个元素。...as $value) {} // 通过赋值遍历 echo implode(',', $array), "\n"; 以上代码会输出 1,2,3 1,2,3 1,2,2 你没有看错,最后一行最后一个是...常见错误 #4:在循环中执行查询 如果像这样的话,一定不难见到你 PHP 无法正常工作。...如果这样脚本在多个线程中被调用,他会有导致系统崩溃潜在危险。 因此,至关重要是,当你代码要进行查询时,应该尽可能收集需要用到,然后在一个查询中获取所有结果。...一个我们平时常常能见到查询效率低下地方 (例如:在循环中)是使用一个数组中 (比如说很多 ID )向表发起请求。

    3K90

    见过懒加载吗?

    懒加载原理就是先在页面中把所有的图片统一使用一张占位图进行占位,把正真的路径存在元素“data-url”(这个名字起个自己认识好记就行)属性里,要用时候就取出来,再设置; 怎样实现懒加载?...2)页面加载完成后,根据scrollTop判断图片是否在用户视野内,如果在,则将data-original属性中取出存放到src属性中。...3)在滚动事件中重复判断图片是否进入视野,如果进入,则将data-original属性中取出存放到src属性中。...2)区别: 两种技术本质:两者行为是相反一个是提前加载,一个是迟缓甚至不加载。 懒加载对服务器前端有一定缓解压力作用,预加载则会增加服务器前端压力。...当Image下载完图片头后,会得到宽和高,因此可以在预载前得到图片大小(方法是用记时器轮宽高变化)。

    76410
    领券