作者B9 (葉酸酸)
看板Ajax
標題Re: [問題] alert( $.ajax )
時間Sun Feb 5 12:09:34 2012
不想把 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
→ terlin10:這樣的做法和存變數不是也差不了多少嗎? 02/05 12:26
推 LPH66:有個好處是避免全域變數的命名汙染 02/05 13:06
推 mrbigmouth:一模一樣吧? 你那個handler難道就不是全域變數了?XD 02/05 13:27
→ mrbigmouth:像上一篇最後那種全部放進function裡的做法也不會汙染 02/05 13:29
→ mrbigmouth:全域啊...你只是把一個變數換成object而已... 02/05 13:30
→ B9: 忘記說要用 closure 包起來 = = 02/07 00:34
推 LPH66:呃, 用closure包起來的話其實不用這樣改也行啊囧 02/08 13:30
→ B9: 差別是這樣寫你在 handler.success 的 context 裡面時, 02/09 21:55
→ B9: 可以確定要的東西已經回來了 02/09 21:55
→ B9: 不過你可以說那個 handler object 是多餘的沒錯 02/09 21:56
→ B9: 要不要把 callback 放在某個 namespace 底下只是個設計問題 02/09 21:57