首页
学习
活动
专区
工具
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 ~ 2的32次方的一个圆中,然后将实际的物理节点的IP地址或取其hash值,放入到hash环中。...,引入了虚拟节点的,可以设置一个哈希环中存在多少个虚拟节点,然后将虚拟节点映射到实体节点,从而解决数据分布吧均衡的问题。...,比轮循、加权轮循、随机、加权随机算法等负载均衡算法相比,实现复杂,性能低下,运维管理复杂。

4.1K20

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

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

47720
  • 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对代码的运行影响: 分析代码可以知道它们修改条件的位置不同

    13310

    让你写出更加优秀的代码!

    贾言 代码评审歪诗 窗外风雪再大 也有我陪伴着你 全文字数: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.3K10

    大文件上传服务器:支持超大文件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值为什么不能验证通过呢?...联想回答: 实际项目里,一对多的事物关系特别多,比如一个作者可以有多本书,那本书只能是一个作者,那么这个人和书就是一对多的关系,其实搞什么一对多,多对多模型,本质就是减少数据库表的创建,方便数据查询,

    77520

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

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

    3.9K30

    十个 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

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

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

    4.5K20

    见过懒加载吗?

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

    77010
    领券