作者nightspirit (鞭策自己社清流夜靈)
看板Ajax
標題Re: [問題] alert( $.ajax )
時間Wed Feb 8 04:51:36 2012
通常$.ajax這種會有動作要在success做的話我多都會多自帶一個callback
function login(callback){
$.ajax({
參數不寫了以下略,
success:function(data){
if(typof(callback) !== "undefined"){
callback.call(this,data); // 會把資料丟給傳進來的callback函式
}
}
});
}
如此一來login如果要重複用但每次handler不同的話,
就可以這樣寫
login(handler1(data));
login(handler2(data));
匿名函式也可以
login(function(data){
alert(data);
});
一個重點~ AJAX是asynchronized,所以你的success處理函式是要資料收到才會觸發,
你寫 alert($.ajax({success: function(r){return r}});
因為alert被call的時候 ajax success根本資料都還沒來所以不會return任何東西,
相反的你若是把alert寫在success function裡,那就是資料到了才去處理那函式,
alert這時才有值可以吐阿
觀念若有誤請指正 :)
※ 編輯: nightspirit 來自: 66.122.205.38 (02/08 05:03)
1F:→ nenpow:原po有設async為false 02/08 13:44
2F:→ sk1765:有了 async=false 只需要success function裡 re=r就好了 02/08 14:45
3F:→ sk1765:先讓非同步改成同步 也是一個debug的方法 02/08 14:46