2010-10-20 7 views
0

Ma question est un peu étrange mais j'ai besoin de mettre à jour la fonction $ .ajax.Ajax: comment modifier correctement les sources jQuery?

Dans le code jQuery original, il y a:

ajax: function(origSettings) { 
    // Some code 
    function success() { 
     // 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]); 
     } 
    } 
} 

Et je voudrais changer la fonction success interne:

ajax: function(origSettings) { 
    // Some code 
    function success() { 
     // Fire the global callback 
     if (s.global) { 
      trigger("ajaxSuccess", [xhr, s]); 
     } 

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

changements de déclenchement dans cet ordre est plus normal et adapté pour moi ...

Comment puis-je faire cela correctement? (Si je peux ...)

Merci.

Répondre

0

J'ai trouvé un fait bien cette façon:

$("body").ajaxSend(function(event, XMLHttpRequest, s) { 
    s._success = s.success; 
    s.success = $.noop; 
    s._error = s.error; 
    s.error = $.noop; 
    s._complete = s.complete; 
    s.complete = $.noop; 
}); 

$("body").ajaxSuccess(function(event, XMLHttpRequest, s) { 
    // Generic code 
    if(s._success) { 
     s._success.call(s.context || s, s.data, s.status, XMLHttpRequest) 
    } 
}); 

/// ajaxError, ajaxComplete /// 
0

Vous devez l'écraser, comme ceci. Malheureusement, il n'y a aucun moyen d'écraser le code au-delà de la couche Objet dans JS. Mais considérez que ce n'est vraiment pas une bonne pratique car cela vous coupera, de toutes les nouvelles corrections de bugs dans JQ.

Pouvez-vous préciser le type de fonctionnalité que vous souhaitez accomplir? Peut-être que c'est plus simple de changer l'autre côté?

+0

J'essaie d'appeler une fonction générique sur toutes les requêtes AJAX sur la page, et si elle échoue (pour une raison ou une autre) ne lancer local rappeler. –

Questions connexes