作者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
1F:→ terlin10:这样的做法和存变数不是也差不了多少吗? 02/05 12:26
2F:推 LPH66:有个好处是避免全域变数的命名污染 02/05 13:06
3F:推 mrbigmouth:一模一样吧? 你那个handler难道就不是全域变数了?XD 02/05 13:27
4F:→ mrbigmouth:像上一篇最後那种全部放进function里的做法也不会污染 02/05 13:29
5F:→ mrbigmouth:全域啊...你只是把一个变数换成object而已... 02/05 13:30
6F:→ B9: 忘记说要用 closure 包起来 = = 02/07 00:34
7F:推 LPH66:呃, 用closure包起来的话其实不用这样改也行啊囧 02/08 13:30
8F:→ B9: 差别是这样写你在 handler.success 的 context 里面时, 02/09 21:55
9F:→ B9: 可以确定要的东西已经回来了 02/09 21:55
10F:→ B9: 不过你可以说那个 handler object 是多余的没错 02/09 21:56
11F:→ B9: 要不要把 callback 放在某个 namespace 底下只是个设计问题 02/09 21:57