日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

發(fā)布時(shí)間:2023/12/2 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ajax和for循环谁难,关于“for”循环中jquery $ .ajax的问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我相信有一些事情正在發(fā)生。首先,$ temp_id變量被提升到函數(shù)的頂部,所以它相當(dāng)于這樣做:

$.ajax({

……

success:function(){

var $temp_id;

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

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

其次,即使$ temp_id在第一個(gè)循環(huán)中等于“id-1”,它也會(huì)在第二個(gè)循環(huán)中變?yōu)椤癷d-2”,所以當(dāng)你第一次調(diào)用成功回調(diào)時(shí),它已經(jīng)被改為“id-2”。

這可以解決您的問(wèn)題:

更新2010-12-03:修正了一個(gè)錯(cuò)誤

$.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傳遞給返回另一個(gè)函數(shù)的函數(shù),該函數(shù)將在成功回調(diào)中調(diào)用。現(xiàn)在可以安全地在成功回調(diào)中使用$ tid,因?yàn)楫?dāng)$ temp_id在第二個(gè)循環(huán)中發(fā)生變化時(shí)它不會(huì)受到影響。

更新:回復(fù)hh54188的評(píng)論

使用“alert”可以打破執(zhí)行過(guò)程并允許意外調(diào)用ajax回調(diào)。在IE和Firefox中就是這種情況。另一方面,Chrome的行為不是這樣的。要對(duì)此進(jìn)行測(cè)試,您可以運(yùn)行以下代碼:

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');

}

});

}

您將看到控制臺(tái)中的輸出為:

循環(huán):0

循環(huán):1

回調(diào)

回調(diào)

現(xiàn)在取消注釋警報(bào)線。在Firefox和IE中,您將看到控制臺(tái)中的輸出現(xiàn)在是:

循環(huán):0

回調(diào)

循環(huán):1

回調(diào)

顯示警告框時(shí),將調(diào)用第一個(gè)回調(diào)。警報(bào)實(shí)質(zhì)上改變了代碼的行為。在JavaScript中進(jìn)行開(kāi)發(fā)時(shí),使用“alert”可能會(huì)令人沮喪,因?yàn)樗赡軐?dǎo)致代碼執(zhí)行不可預(yù)測(cè)。因此,我不建議在調(diào)試時(shí)使用“alert”。相反,使用console.log()更容易預(yù)測(cè)。 console.log()適用于所有現(xiàn)代瀏覽器和IE 8+。對(duì)于較舊的IE,您需要將文本輸出到DOM中。

總結(jié)

以上是生活随笔為你收集整理的ajax和for循环谁难,关于“for”循环中jquery $ .ajax的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。