描述:頁面html的repeater控件中有一個(gè)span,需要根據(jù)指定ID異步獲取相關(guān)信息。
html代碼:
1 <table id="repTable"……>
2 ……
3 <span id="<%# Eval("Id") %>" class="address"></span>
4 </table>
jquery代碼:
1 $(document).ready(function(){
2 $("#repTable span.address").each(function(){
3 var spanTemp = $(this);
4 $.ajax({
5 type: "get",
6 url: "SceneryAjaxCall.aspx",
7 data: "sid="+$(this).attr("id"),
8 cache: true,
9 dataType: "html",
10 success: function(msg){
11 spanTemp.append(msg);
12 }
13 });
14 });
15 });
其中在寫jquery代碼時(shí),我遇到了下面幾個(gè)問題:
(1)開始沒寫第三行,而是在第十一行直接調(diào)用的$(this),報(bào)錯(cuò)“不能給回調(diào)函數(shù)賦值”。原因是回調(diào)后對象已經(jīng)發(fā)生改變,所以需要事先保存;
(2)沒寫dataType,發(fā)現(xiàn)不能返回msg,不知道為什么;
javascript是單線程,你想異步循環(huán)獲取,可以使用把相關(guān)AJAX請求放在一個(gè)隊(duì)列依次發(fā)送請求。否則話,你循環(huán)獲取,從服務(wù)器端返回的數(shù)據(jù)無法找到對應(yīng)的處理函數(shù)
--> google search: ajax并發(fā)
--> the article:"自動(dòng)排隊(duì)的異步Ajax請求"