2014-05-22 3 views
0

Ok, ce que j'essaie de faire est d'alerter les erreurs ajax selon ses codes d'erreur et j'ai beaucoup d'appels ajax sur le site Web, donc j'utilise la fonction de gestionnaire d'erreur ajax globale.Comment faire pour obtenir l'erreur par défaut de l'appel ajax

Mais ce que je veux, c'est que si un appel ajax a déjà des erreurs par défaut, alors il n'y a pas de globalité.

$(document).ready(function(){ 
    $(document).ajaxError(e,xhr,opt){ 
     if(xhr.error){ 
      //Don't do anything 
     } else { 
      alert('You have an error'); 
     } 
    } 
} 

Première fonction:

$.ajax({ 
    type:"post", 
    url:"page.php", 
    data:"name=mohit&lastname=bumb", 
    error:function(){ 
     alert('error'); 
    } 
}); 

Deuxième fonction:

$.ajax({ 
    type:"post", 
    url:"page.php", 
    data:"name=mohit&lastname=bumb", 
}); 

Ainsi, dans 2 cas, il devrait montrer Vous avez une erreur et dans le premier cas que erreur

+0

ok, mais qui était juste en tapant misatake pas émettre –

+0

Je ne pense pas que vous pouvez le faire, comment le gestionnaire d'erreur global savoir que la fonction ajax a un gestionnaire d'erreur de son propre – adeneo

+0

avec certains paramètres peut-être comme si le paramètre d'erreur existe alors il a sa propre erreur sinon aucune logique plus facile je pense –

Répondre

0

Oui, vous pouvez, mais vous devez remplacer les méthodes $.ajax par défaut de jQuery. Vérifiez le code suivant que j'ai utilisé dans l'un de mes projets. Assurez-vous de charger le script juste après jQuery.

Mon scénario était -

  1. Le site avait beaucoup de vues partielles ajax qui a dû vérifier si l'utilisateur est connecté ou non. J'ai donc dû remplacer les appels jquery pour le vérifier.

  2. J'ai également dû montrer un chargeur lorsqu'un appel ajax a été fait. Une autre chose, certains js sont chargés par ajax, donc j'ai ajouté une vérification si l'URL est un fichier .js ou une URL normale.

J'ai retiré les codes confidentiels qui étaient confidentiels pour mon projet. Le reste est là. Cela pourrait vous aider.

$(document).ready(function() { 
    var oldjQuery = []; 
    oldjQuery["ajax"] = $.ajax; 
    oldjQuery["load"] = $.load; 
    var newOptions = []; 
    //override ajax 
    jQuery.ajax = function (options) { 
     newOptions["ajax"] = $.extend({}, options); 
      //override the success callback 
      newOptions["ajax"].success = function (data, textStatus, jqXhr) { 
       try { 
        if (options.url.indexOf('.js') <= -1) { 
         //this is a normal success call, do nothing 
        } 
       } 
       catch (err) { 
         //... my other codes, incase any error occurred 
       } 

       if (typeof options.success != 'undefined') { 
         //the ajax call has a success method specified, so call it 
         options.success(data, textStatus, jqXhr); 
        } 
      }; 

      //override the error callback 
      newOptions["ajax"].error = function (jqXhr, textStatus, errorThrown) { 
       try { 
        if (options.url.indexOf('.js') <= -1) { 
        //this is a normal success call, do nothing 
        } 
       }catch (y) { 
        //... my other codes, incase any error occurred 
       } 

       //the ajax call has an error method specified, so call it 
       if (typeof options.error != 'undefined') { 
        options.error(jqXhr, textStatus, errorThrown); 
       } 
      }; 

      return oldjQuery["ajax"](newOptions["ajax"]); 
     }; 

     //override load function 
    jQuery.load = function (url, data, completeCallback, ignore) { 
     newOptions["load"].completeCallback = function (d, textStatus, jqXhr) { 
      try { 
       if (url.indexOf('.js') <= -1) { 
        //codes 
       } 
      } catch (err) { 
       try { 
        //codes 
       }catch (err2) { 
       } 
      } 

      if (typeof completeCallback != 'undefined') { 
        //call the default completed callback 
        completeCallback(d, textStatus, jqXhr); 
       } 
      }; 

      return oldjQuery["load"](url, data, newOptions["load"].completeCallback); 
     }; 
}); 
Questions connexes