[問題] jquery的ajax問題

看板Ajax作者 (決戰的日子)時間17年前 (2008/10/23 23:00), 編輯推噓2(207)
留言9則, 2人參與, 最新討論串1/1
下面這一段是我的程式碼 目的是想簡單的模擬一下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

10/23 23:08, , 1F
ajax是非同步的喔...所以送出5個request時間很短
10/23 23:08, 1F

10/23 23:08, , 2F
回傳資料回來的時候i已經是5了...
10/23 23:08, 2F

10/23 23:09, , 3F
你可以去查一下ajax原來js原始的用法會比較清楚
10/23 23:09, 3F

10/23 23:09, , 4F
所以要照順序送出ajax的話要在第一個success裡面做第二次
10/23 23:09, 4F

10/23 23:10, , 5F
用for的話就是會一直送出...至於什麼時候回傳..
10/23 23:10, 5F

10/23 23:10, , 6F
是看網路速度
10/23 23:10, 6F

10/23 23:11, , 7F
當然有一個參數可以改成同步的
10/23 23:11, 7F

10/24 00:50, , 8F
這個問題跟上一頁的[function 裡的 setTimeout 與 變數]
10/24 00:50, 8F

10/24 00:50, , 9F
屬於同一個問題 , 算是執行順序/scope/value的問題.
10/24 00:50, 9F
文章代碼(AID): #19096Waw (Ajax)
文章代碼(AID): #19096Waw (Ajax)