台灣最大程式設計社群網站
線上人數
924
 
會員總數:246136
討論主題:189720
歡迎您免費加入會員
討論區列表 >> AJAX / JSON / jQuery >> ajax 同步處理
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
ajax 同步處理
價值 : 50 QP  點閱數:256 回應數:3
樓主

芋頭
初學者
247 457
3122 457
發送站內信

請問各位高手, 我設定了ajax同步處理 , 但是$('#C')還是有時會取不到值, 必須要搬到裡面才能抓到值 ,
請問是我哪邊設定有問題嗎?
謝謝∼
$.ajax({
type: "POST",
url: 'XXXX',
data: "XXXXX,
cache: false, async: false,
success: function (data) {
var tmp1 = data.split(";");

Corp = tmp1[0];
Dept = tmp1[1];

$('#A').val(tmp1[1]);
$('#B').val(tmp1[2]);



}
});
$('#C').val(Corp);




搜尋相關Tags的文章: [ ajax ] , [ 同步處理 ] ,
本篇文章發表於2020-06-18 17:37
1樓
回應

香帥
檢舉此回應
您要先宣告Corp為全域變數
裡面的抓到了後,外面的就可繼續使用
本篇文章回覆於2020-06-18 23:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

芋頭
檢舉此回應
謝謝大大回覆
之前我已經有宣告全域變數了, 但就是有時可以抓到資料,有時會失敗 , 讓我懷疑async: false 好像沒作用
本篇文章回覆於2020-06-20 14:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
javascript這樣很常見的。
主要是因為執行順序的時間差不同。

當然,或許你認為 async: false 就卡住了。
實際上也是如此。

但就是有時會有個0.3秒的誤差時間存在。
不要懷疑,我早就不在用同步化處理了。反正沒啥用。

你可以在你#c的地方,用個timeout 0.3~0.5秒再設定值。你會發現就都可以拿到了。

另外上面的問題,以前困擾我很多次。所以後期我雖不在採用同步進行。改採用非同步處理。
但我當時也很了解為何會這樣。

具之前片面看到的文章,似乎是跟記憶位址相關性有關。
大約的說法是說在function內用的變數跟外部宣告的變數不是同一位址。
所以在交換週期什麼什麼的....(抱歉,我實在不是讀書的料,沒背熟)

可以從宣告的變數來解決這個問題。就交給你去查了。
不過因為我不在用這招,也沒在繼續實驗。就交給你實驗了。
本篇文章回覆於2020-06-23 10:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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