Re: [問題] alert( $.ajax )

看板Ajax作者 (葉酸酸)時間12年前 (2012/02/05 12:09), 編輯推噓3(308)
留言11則, 4人參與, 最新討論串2/4 (看更多)
不想把 r 存到 global variable 的話,可以加上綠色的程式碼。 alert( login() ); function login(){ $.ajax({ url: './data.php', type: 'post', async: false, data: {action:'login' }, error: function(xhr) { alert('Ajax request 發生錯誤'); $(e.target).attr('disabled', false); }, success: function(r) { handler.success(r); return r; } }); } var handler = {}; handler.success = function(r) { alert("handler.success gets " + r); }; -- Oni devas ami animalojn. Ili estas tiel bongustaj. One should love animals. They are so tasty. 每個人都應該愛動物,他們是如此美味。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.180.52.215

02/05 12:26, , 1F
這樣的做法和存變數不是也差不了多少嗎?
02/05 12:26, 1F

02/05 13:06, , 2F
有個好處是避免全域變數的命名汙染
02/05 13:06, 2F

02/05 13:27, , 3F
一模一樣吧? 你那個handler難道就不是全域變數了?XD
02/05 13:27, 3F

02/05 13:29, , 4F
像上一篇最後那種全部放進function裡的做法也不會汙染
02/05 13:29, 4F

02/05 13:30, , 5F
全域啊...你只是把一個變數換成object而已...
02/05 13:30, 5F

02/07 00:34, , 6F
忘記說要用 closure 包起來 = =
02/07 00:34, 6F

02/08 13:30, , 7F
呃, 用closure包起來的話其實不用這樣改也行啊囧
02/08 13:30, 7F

02/09 21:55, , 8F
差別是這樣寫你在 handler.success 的 context 裡面時,
02/09 21:55, 8F

02/09 21:55, , 9F
可以確定要的東西已經回來了
02/09 21:55, 9F

02/09 21:56, , 10F
不過你可以說那個 handler object 是多餘的沒錯
02/09 21:56, 10F

02/09 21:57, , 11F
要不要把 callback 放在某個 namespace 底下只是個設計問題
02/09 21:57, 11F
文章代碼(AID): #1FBW415A (Ajax)
文章代碼(AID): #1FBW415A (Ajax)