作者Penghus (決戰的日子)
看板Ajax
標題[問題] jquery的ajax問題
時間Thu Oct 23 23:00:47 2008
下面這一段是我的程式碼
目的是想簡單的模擬一下server的處理進度。
分析出textarea的行數後,然後傳到server之後,然後alert出目前處理的進度。
不過我發現最後alert出來的數字都一樣。
例如假設我textarea有五行文字,我預期這一段程式碼是會照順序alert出1 2 3 4 5
不過結果竟然是alert出 5 5 5 5 5 。
這樣跟我原本想模擬出server處理的進度狀況有點不太一樣。
不知道是否有高手可以幫忙指點一下,謝謝
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=BIG5">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.2.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#send").click(function(){
var x = $("#select").val();
var yy = x.split("\n");
for(var i = 0;i < yy.length; i++){
$.ajax({
type: "POST",
url: "ProgressSvlt",
data:new Date().getTime(),
success:function(data){
if(data=="ok"){
alert(i+1);
}
}
});
}
});
});
</script>
</head>
<body>
<h1>wewewew1</h1>
<textarea id="select" rows="10" cols="10"></textarea>
<br>
<input type="button" id="send" value="send" />
<br>
<div id="show"></div>
</body>
</html>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.117.119.102
1F:推 tn801534:ajax是非同步的喔...所以送出5個request時間很短 10/23 23:08
2F:→ tn801534:回傳資料回來的時候i已經是5了... 10/23 23:08
3F:→ tn801534:你可以去查一下ajax原來js原始的用法會比較清楚 10/23 23:09
4F:→ tn801534:所以要照順序送出ajax的話要在第一個success裡面做第二次 10/23 23:09
5F:→ tn801534:用for的話就是會一直送出...至於什麼時候回傳.. 10/23 23:10
6F:→ tn801534:是看網路速度 10/23 23:10
7F:→ tn801534:當然有一個參數可以改成同步的 10/23 23:11
8F:推 TonyQ:這個問題跟上一頁的[function 裡的 setTimeout 與 變數] 10/24 00:50
9F:→ TonyQ:屬於同一個問題 , 算是執行順序/scope/value的問題. 10/24 00:50