2011-05-24 64 views
1

在jQuery的例子中,我看到它通常是在$ .ajax() 裏面定義成功函數,我們可以將它移到主體之外。我們可以將成功函數移到.ajax之外嗎?

+0

你必須解釋你爲什麼需要? – 2011-05-24 05:26:28

+1

@Shakti Singh:不,他不需要。這非常簡單 - 例如,當我們需要爲幾個'$ .ajax'擁有相同的處理程序時,或者當函數已經在某處定義時。 – zerkms 2011-05-24 05:30:39

回答

4

如果你的意思是這樣的:

function onSuccess() 
{ 
    $(this).addClass("done"); 
} 

$.ajax({ 
    url: "test.html", 
    context: document.body, 
    success: onSuccess 
}); 

然後是的,你可以做到這一點。

+0

差不多+1了。請傳遞'msg','msg.d'。否則有什麼意義? – naveen 2011-05-24 05:34:44

2

是的,當然。您可以分配一個匿名函數變量:

var handleSuccess = function(data) { 
    alert(data); 
}; 

,或者你可以把它命名函數:

function handleSuccess(data) { 
    alert(data); 
} 

對於您剛纔使用的對象變量/函數的名稱兩種選擇:

$.ajax({ 
    success: handleSuccess 
    ... 
}); 
+0

+1:技術上更正確。處理返回:) – naveen 2011-05-24 05:35:13

+0

爲什麼指定這樣的成功數據是錯誤的:handleSuccess(data) – user705414 2011-05-24 05:37:32

+0

@ user705414:因爲然後你會調用該函數,並把對象的返回值,你想把一個引用對象中的函數。 – Guffa 2011-05-24 05:53:20

0

我使用dojo比我做的jQuery更多,但想法是一樣的。只要ajax調用可以引用這個外部函數,沒有理由不能做到這一點。你可能會遇到這樣的問題:當這個ajax函數被調用時,它可能不再能夠進入成功函數,這取決於你設置的方式。 dojo.hitch(context,function)會爲你解決這個問題。

相關問題