我相信有一些事情正在发生。首先,$ temp_id变量被提升到函数的顶部,所以它相当于这样做:

$.ajax({

……

success:function(){

var $temp_id;

for (var i = 0; i < $children.length; i++) {

$temp_id = $children.eq(i).attr("id");

其次,即使$ temp_id在第一个循环中等于“id-1”,它也会在第二个循环中变为“id-2”,所以当你第一次调用成功回调时,它已经被改为“id-2”。

这可以解决您的问题:

更新2010-12-03:修正了一个错误

$.ajax({

……

success:function(){

for (var i = 0; i < $children.length; i++) {

var $temp_id = $children.eq(i).attr("id"); //"$children" have defined in above

$.ajax({

type: "get",

url: "Database/App_all.xml",

dataType: "html",

success: function($tid) {

return function (xml) {

var $temp_code = $(xml).find("app[id='" + $tid + "']").find("html_code").html();

$($temp_code).appendTo($("#contain")).hide().show('slow');

}

}($temp_id),

error: function () { }

});

}

}

});

我正在做的是将$ temp_id传递给返回另一个函数的函数,该函数将在成功回调中调用。现在可以安全地在成功回调中使用$ tid,因为当$ temp_id在第二个循环中发生变化时它不会受到影响。

更新:回复hh54188的评论

使用“alert”可以打破执行过程并允许意外调用ajax回调。在IE和Firefox中就是这种情况。另一方面,Chrome的行为不是这样的。要对此进行测试,您可以运行以下代码:

for (var i = 0; i < 2; i++) {

//if (i == 1) alert('stopping execution');

console.log('loop: ' + i);

$.ajax({

url: "Database/App_all.xml",

dataType: "html",

success: function () {

console.log('callback');

}

});

}

您将看到控制台中的输出为:

循环:0

循环:1

回调

回调

现在取消注释警报线。在Firefox和IE中,您将看到控制台中的输出现在是:

循环:0

回调

循环:1

回调

显示警告框时,将调用第一个回调。警报实质上改变了代码的行为。在JavaScript中进行开发时,使用“alert”可能会令人沮丧,因为它可能导致代码执行不可预测。因此,我不建议在调试时使用“alert”。相反,使用console.log()更容易预测。 console.log()适用于所有现代浏览器和IE 8+。对于较旧的IE,您需要将文本输出到DOM中。

ajax和for循环谁难,关于“for”循环中jquery $ .ajax的问题相关推荐

  1. JavaScript学习笔记(五)---cookie、Proxy、服务器、PHP语言、http协议、同步异步、事件轮循机制、ajax编写、接口

    JavaScript学习笔记(五)---cookie.Proxy.服务器.PHP语言.http协议.同步异步.事件轮循机制.ajax编写.接口 1.cookie 1.1cookie概念 1.2cook ...

  2. tp5ajax轮询,ajax轮询查询状态并输出提示音 TP5+jquery+ajax声音提示功能

    在做一些会员系统的时候,经常需要对会员收到短信息进行声音提醒,这就需要AJAX在后台循环调用会员收到信息状态, 一单收到信息就播放特定音乐进行提醒 这里用了TP5作为后端演示 前端代码:html> ...

  3. Ajax和JSON-学习笔记01【原生JS方式实现Ajax】

    Java后端 学习路线 笔记汇总表[黑马程序员] Ajax和JSON-学习笔记01[原生JS方式实现Ajax] Ajax和JSON-学习笔记02[JQuery方式实现Ajax] Ajax和JSON-学 ...

  4. WebCast《实战ASP.NET AJAX系列课程(2):使用客户端框架创建“纯粹”的Ajax应用程序》相关资源...

    本课程将从头开始使用ASP.NET AJAX客户端框架/组件创建一个"纯粹"的Ajax应用程序的全过程.适合于开发者学习Ajax所带来的这种崭新的开发方式,即将表示层完全放在客户端 ...

  5. java sleep 循环_while循环中的Thread.sleep()

    我注意到NetBeans警告我在我的Java代码中使用while循环中的Thread.sleep(),所以我已经对这个主题进行了一些研究 . 主要问题似乎是性能问题,当计数器仍处于休眠状态时,你的状态 ...

  6. oracle双重for循环sql,Oracle 11g中for循环中的PL / SQL限制

    我有一个大约有3000万条记录的表,并且我想像这样循环遍历表中存在的记录: FOR i IN (SELECT * FROM tbl_items it Left join location lo ON ...

  7. ajax css文件,wordpress 添加JS,css文件,实现AJAX效果

    一,我的问题 我想在wordpress里面添加一个JS文件,实现在一个ajax效果,我在网上找了一个插件,AJAX wordpress发现在不好用,就没有用了.下面我就以本BLOG里面的,收藏和分享为 ...

  8. ie11 ajax 加载提示,解决在IE11浏览器下,JQuery的AJAX方法不响应问题

    在项目的时候一直都是在使用谷歌浏览器在调试,后来在现场部署到服务器上的时候,客户使用的是IE浏览器,版本是11 在测试的过程中,出现几个问题,虽然是几个问题,但是问题的原因就是AJAX第一次响应,第二 ...

  9. c语言for循环中i,C语言for循环语句中a[i][j]和a[j][i]有什么区别

    匿名用户 1级 2014-04-27 回答 可以将i 理解成行,j 理解成列,a[i][j]和a[j][i]取值不同 比如,假设一个3维数组(你的是5x5),数值分别为: 1 2 3 4 5 6 7 ...

最新文章

  1. QEMU — I/O QoS 的实现方式
  2. 进制A~Z,全字母26进制转化
  3. db2 linux 导入数据_MySQL数据的导出和导入(Linux)
  4. [2005.04.24 20:47:26] 实践与思考之窥索[原创]
  5. 记一次golang中sync.Map并发创建、读取的问题
  6. python编程语言-Python简史:开发者的小小副业如何成为全球最热编程语言?
  7. 8255工作方式一A口和B口输出
  8. unity3d怎么让模型动起来_Unity动画系统详解1:在Unity中如何制作动画?
  9. 纯C语言编程-游戏之Fly Bird
  10. 如何设计一个网页版音乐播放器
  11. 比较两组数据的差异用什么图更直观_第四节 单因素完全随机实验设计及数据处理...
  12. 矩阵和POJ 3233
  13. 特斯拉公布马斯克去年薪酬状况:工资5.6万美元 期权激励超过22亿美元
  14. android中数据统计,Android 友盟统计集成
  15. DDLMS-DFE算法
  16. 不用做实验也可以轻松找到癌症组织特异性基因
  17. extjs6 异步树
  18. 一级计算机基础及ms office应用练习,2016一级计算机基础及msoffice应用练习题
  19. GPU和video transcoder
  20. 计算机视觉学习——表面检测

热门文章

  1. echart 折线从左到右动画效果_echarts之自动切换折线图
  2. linux rcu机制,Linux RCU机制详解 (透彻)
  3. sougou ubuntu 优麒麟_搜狗输入法 Linux – V2.3 版发布,完美适配优麒麟 19.10
  4. 【LDPC系列2】基于MATLAB中LDPC编译码器对象的图像传输通信系统仿真(IEEE 802.16e标准协议基础矩阵)
  5. 【黑客帝国数字雨屏保】基于Win32的黑客帝国数字雨屏幕保护程序(附VS工程代码文件和可执行文件)
  6. python处理中文字符串_python字符串中的中文处理
  7. php 档案,PHP 档案包 (PHAR)
  8. documentFragment深入理解
  9. boke练习: spring boot: security post数据时,要么关闭crst,要么添加隐藏域
  10. protected default