Как предотвратить перезапись параметров jQuery $ .ajaxSetup ()? - PullRequest
4 голосов
/ 16 января 2011

У меня вопрос по поводу ajaxSetup. Когда скрипт запускается, я определяю следующее:

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

До этого все работает нормально. Проблема начинается с использования Ajaxify, который перезаписывает функцию успеха.

Как я могу предотвратить это? Есть ли возможность выполнить обе функции или добавить функцию успеха установки к той, которую я вызываю в основном запросе AJAX?

Ответы [ 4 ]

4 голосов
/ 24 июля 2011

Использовать функцию обратного вызова, определенную в ajaxsetup.
Определение

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

и позвоните позже

$.ajax({
    beforeSend: function() {
        $.ajaxSettings.beforeSend();
        // do other
        ...
    }
});    
3 голосов
/ 27 апреля 2011

в источнике jquery-1.4.2.js добавьте "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 добавьте "вашу функцию() ":

if (isSuccess) {

 yourFunction();

 deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
} else {
 deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
}
1 голос
/ 03 января 2014

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

Вы можете использовать глобальные события таким образом (перечислены ниже) вместо использования ajaxSetup.Таким образом, локальный не «переопределит» глобальный.Они оба будут выполнены.

Глобальные события инициируются в документе, вызывая любые обработчики, которые могут прослушивать.Вы можете слушать эти события так:

// the global event for success is "ajaxSuccess"
$(document).bind("ajaxSuccess", function(){
    // do your function
});
0 голосов
/ 16 января 2011

Предотвращение этого может повлечь за собой некорректное изменение кода плагина jQuery или Ajaxify, поскольку $.ajaxSetup предназначен для перезаписи старых настроек.Вместо этого, вы не можете просто использовать собственное свойство Ajaxify onSuccess?(см .: http://max.jsrhost.com/ajaxify-jquery-plugin/)

$('.trigger').ajaxify({
    target: '#element',
    onSuccess: function( options, data ) {
        example();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...