ajax和for循环谁难,关于“for”循环中jquery $ .ajax的问题
我相信有一些事情正在发生。首先,$ 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的问题相关推荐
- JavaScript学习笔记(五)---cookie、Proxy、服务器、PHP语言、http协议、同步异步、事件轮循机制、ajax编写、接口
JavaScript学习笔记(五)---cookie.Proxy.服务器.PHP语言.http协议.同步异步.事件轮循机制.ajax编写.接口 1.cookie 1.1cookie概念 1.2cook ...
- tp5ajax轮询,ajax轮询查询状态并输出提示音 TP5+jquery+ajax声音提示功能
在做一些会员系统的时候,经常需要对会员收到短信息进行声音提醒,这就需要AJAX在后台循环调用会员收到信息状态, 一单收到信息就播放特定音乐进行提醒 这里用了TP5作为后端演示 前端代码:html> ...
- Ajax和JSON-学习笔记01【原生JS方式实现Ajax】
Java后端 学习路线 笔记汇总表[黑马程序员] Ajax和JSON-学习笔记01[原生JS方式实现Ajax] Ajax和JSON-学习笔记02[JQuery方式实现Ajax] Ajax和JSON-学 ...
- WebCast《实战ASP.NET AJAX系列课程(2):使用客户端框架创建“纯粹”的Ajax应用程序》相关资源...
本课程将从头开始使用ASP.NET AJAX客户端框架/组件创建一个"纯粹"的Ajax应用程序的全过程.适合于开发者学习Ajax所带来的这种崭新的开发方式,即将表示层完全放在客户端 ...
- java sleep 循环_while循环中的Thread.sleep()
我注意到NetBeans警告我在我的Java代码中使用while循环中的Thread.sleep(),所以我已经对这个主题进行了一些研究 . 主要问题似乎是性能问题,当计数器仍处于休眠状态时,你的状态 ...
- oracle双重for循环sql,Oracle 11g中for循环中的PL / SQL限制
我有一个大约有3000万条记录的表,并且我想像这样循环遍历表中存在的记录: FOR i IN (SELECT * FROM tbl_items it Left join location lo ON ...
- ajax css文件,wordpress 添加JS,css文件,实现AJAX效果
一,我的问题 我想在wordpress里面添加一个JS文件,实现在一个ajax效果,我在网上找了一个插件,AJAX wordpress发现在不好用,就没有用了.下面我就以本BLOG里面的,收藏和分享为 ...
- ie11 ajax 加载提示,解决在IE11浏览器下,JQuery的AJAX方法不响应问题
在项目的时候一直都是在使用谷歌浏览器在调试,后来在现场部署到服务器上的时候,客户使用的是IE浏览器,版本是11 在测试的过程中,出现几个问题,虽然是几个问题,但是问题的原因就是AJAX第一次响应,第二 ...
- 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 ...
最新文章
- QEMU — I/O QoS 的实现方式
- 进制A~Z,全字母26进制转化
- db2 linux 导入数据_MySQL数据的导出和导入(Linux)
- [2005.04.24 20:47:26] 实践与思考之窥索[原创]
- 记一次golang中sync.Map并发创建、读取的问题
- python编程语言-Python简史:开发者的小小副业如何成为全球最热编程语言?
- 8255工作方式一A口和B口输出
- unity3d怎么让模型动起来_Unity动画系统详解1:在Unity中如何制作动画?
- 纯C语言编程-游戏之Fly Bird
- 如何设计一个网页版音乐播放器
- 比较两组数据的差异用什么图更直观_第四节 单因素完全随机实验设计及数据处理...
- 矩阵和POJ 3233
- 特斯拉公布马斯克去年薪酬状况:工资5.6万美元 期权激励超过22亿美元
- android中数据统计,Android 友盟统计集成
- DDLMS-DFE算法
- 不用做实验也可以轻松找到癌症组织特异性基因
- extjs6 异步树
- 一级计算机基础及ms office应用练习,2016一级计算机基础及msoffice应用练习题
- GPU和video transcoder
- 计算机视觉学习——表面检测
热门文章
- echart 折线从左到右动画效果_echarts之自动切换折线图
- linux rcu机制,Linux RCU机制详解 (透彻)
- sougou ubuntu 优麒麟_搜狗输入法 Linux – V2.3 版发布,完美适配优麒麟 19.10
- 【LDPC系列2】基于MATLAB中LDPC编译码器对象的图像传输通信系统仿真(IEEE 802.16e标准协议基础矩阵)
- 【黑客帝国数字雨屏保】基于Win32的黑客帝国数字雨屏幕保护程序(附VS工程代码文件和可执行文件)
- python处理中文字符串_python字符串中的中文处理
- php 档案,PHP 档案包 (PHAR)
- documentFragment深入理解
- boke练习: spring boot: security post数据时,要么关闭crst,要么添加隐藏域
- protected default