2011-08-24 12 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

関連する問題