2011-01-15 12 views
4

ajaxSetupに関する質問があります。スクリプトが開始されると、私は次のように定義します:

$.ajaxSetup({ 
    success: function(data) { 
    example(); 
    } 
});

ここまではすべて正常です。この問題は、成功関数を上書きするAjaxifyを使用することから始まります。

どうすればこの問題を防ぐことができますか?両方の機能を実行したり、メインAJAXリクエストで呼び出すセットアップ成功関数を追加することは可能ですか?

答えて

3

追加 "yourFunctionを()":

function success() { 

yourFunction();  

// If a local callback was specified, fire it and pass it the data 
if (s.success) { 
    s.success.call(callbackContext, data, status, xhr); 
} 

// Fire the global callback 
if (s.global) { 
    trigger("ajaxSuccess", [xhr, s]); 
} 

} 

編集:jqueryの-1.5.1のソースで

.js "yourFunction()"を追加します。

if (isSuccess) { 

yourFunction(); 

deferred.resolveWith(callbackContext, [ success, statusText, jqXHR ]); 
} else { 
deferred.rejectWith(callbackContext, [ jqXHR, statusText, error ]); 
} 
0

$.ajaxSetupは古い設定を上書きするように設計されているため、jQueryプラグインまたはAjaxifyプラグインコードを変更することを推奨しません。代わりに、Ajaxify独自のonSuccessプロパティを使用することはできませんか? (参照:http://max.jsrhost.com/ajaxify-jquery-plugin/)をjqueryの - 1.4.2.jsのソースで

$('.trigger').ajaxify({ 
    target: '#element', 
    onSuccess: function(options, data) { 
     example(); 
    } 
}); 
4

ajaxsetupで定義されたコールバック関数を使用します。

$.ajaxSetup({ 
    beforeSend  : function() { 
     $('#ajaxLoader').show(); 
     ... 
    } 
}); 

を定義し、後であなたが代わりにajaxSetupを使用しての世界的なイベントをこの方法(下記参照)を使用することができます

$.ajax({ 
    beforeSend: function() { 
     $.ajaxSettings.beforeSend(); 
     // do other 
     ... 
    } 
});  
+0

thanks sandex!これは私が必要なものです!よくやった! – GianFS

1

http://api.jquery.com/Ajax_Events/

を呼び出します。このようにして、ローカルのものはグローバルなものを「オーバーライド」しません。彼らは両方とも処刑されるでしょう。

グローバルイベントがドキュメント上でトリガされ、リスンしているハンドラが呼び出されます。このようなイベントは、次のように聞くことができます。

// the global event for success is "ajaxSuccess" 
$(document).bind("ajaxSuccess", function(){ 
    // do your function 
}); 
関連する問題