2011-08-24 42 views
0

有沒有我可以訪問我的成功過程中收到的數據,所以我可以完整的回調過程中使用它的方法嗎?從ajax成功訪問數據完整?

或許有一種方法,我可以分配多個成功的功能呢?

我需要的是,允許成功回調根據情況而改變,但我需要使用返回到第一功能相同的數據始終執行成功的專用功能。

我想我可以隨時設置我的電話像這樣,但我想看看是否有更好的方法。

CallServer = function(options) { 
    if(options.success) { 
    var customSuccess = options.success; 
    options.success = function(data) { 
     defaultSuccess(data); 
     customSuccess(data); 
    } 
    } 
    $.extend(true, defaults, options); 
    $.ajax(defaults); 
} 

編輯:我發現我的答案。我沒有意識到xhr將數據保存爲responseText。所以下面的內容會讓我獲得成功時返回爲「數據」的相同內容。

complete: function(xhr){dosomething(xhr.responseText);} 

就是這樣!由於

+0

由於您似乎已經在使用jQuery,請閱讀jQuery的[Deferred](http://api.jquery.com/category/deferred-object/)功能。您可以使用'.done()'方法添加多個回調。 – nnnnnn

+0

感謝您的關注。我可以想象它在我的項目中稍後會很有用。不幸的是,它似乎無法幫助獲取ajax調用的返回數據... – Zholen

回答

0

我發現我的答案。我沒有意識到xhr將數據保存爲responseText。所以下面的內容會讓我獲得成功時返回爲「數據」的相同內容。

complete: function(xhr){dosomething(xhr.responseText);} 

就是這樣!謝謝

1

在jQuery中,成功回調接受數據作爲第一個參數。

從jQuery文檔(http://api.jquery.com/jQuery.ajax/)的參數列表成功回調是:

成功(數據,textStatus,jqXHR)

據我所知,沒有內置的方式來添加多個成功回調,但您可以輕鬆地從自定義成功回調調度任何數量的功能。

也許你可以使用一個系統,如:

function customSuccess(data) { 
    if (situation == "one way") { 
     firstFunction(data): 
    } 
    else if (situation == "another way") { 
     secondFunction(data); 
    } 
} 
+0

是的,但我的問題是如果我可以獲取數據對象返回到成功函數可以訪問完整的功能之後就會運行,這樣我就不必做一個情景成功的功能。 – Zholen

+0

在我的例子它被傳遞到調度函數作爲參數。你是這個意思嗎? – Wyatt