台灣最大程式設計社群網站
線上人數
790
 
會員總數:245214
討論主題:189089
歡迎您免費加入會員
討論區列表 >> AJAX / JSON / jQuery >> ajax 傳值的順序30
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
ajax 傳值的順序30
價值 : 50 QP  點閱數:218 回應數:2

樓主

cat
初學者
39 172
3039 368
發送站內信


請較先進們
我用ajax 接收值給 sSignupNo 但是 alert(sSignupNo) 第一次顯示卻還是 -1 第二次才顯示ajax 傳回的值
顯示順序是 alert(sSignupNo); 先 才是 alert(responseText); 請問這是甚麼原因呢? 又要如何修改呢
謝謝

搜尋相關Tags的文章: [ ajax ] ,
本篇文章發表於2019-05-16 21:53
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

迷路
捐贈 VP 給 迷路 檢舉此回應
因為沒有設定async:false
所以執行ajax時,網頁並沒有停下來等ajax執行完畢再繼續
本篇文章回覆於2019-05-17 09:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
ajax是屬於一種backcall的做法。
也就是他並非跟一般程式一樣會等待運行完才會往下運行。

也就是說,依照你目前的程式來說明。
在第6行進行了ajax時。就將其進入背景運行。
但程式並不會等待。會繼續往下運行19行之後的程式碼。

也就是說,在其ajax未完成success的動作時。你的sSignupNo值還是原本的預設值-1。

正確的做法是,你得將需要使用取得 sSignupNo 運做的程式。要放到success其下來運行。

當然,像#1告訴你的async:false。就是ajax的同步等待宣告。也就是說它會確定ajax已運行完後。才會再跳開往下運行其它的javascript程式碼。
基本上我很少用這個宣告。因為這樣其實就會失去了ajax的本身特性。
當然這是我的個人問題就是了。我認為ajax就是要用在非同步的情況下作用。它只是幫助我同步後端參數使用。但不能直接去影響我的javascript。
所以我個人並不會使用同步等待這樣的動作。
本篇文章回覆於2019-05-17 10:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.