2010-09-06 5 views
2

Je voudrais étendre jQuery de telle sorte que chaque requête post/get faite du côté client aura un paramètre supplémentaire envoyé (toujours la même clé: valeur). J'ai besoin de cela pour détecter du côté client si la requête a été faite via jQuery, puisque j'ai plusieurs libs js au travail. Le paramètre supplémentaire est simplement jquery : true. Une demande typique sera normalement ceci:jQuery - puis-je "ajouter" un paramètre supplémentaire à chaque requête get/post faite

jQuery.post('/users/save', { name : 'john', age : 24 }, ....) 

Est-il possible d'ajouter ce paramètre d'addition par l'extension jQuery ou d'une autre manière telle que ça va ressembler alors quand il atteint le serveur:

{ name : 'john', age : 24, jquery : true } 

Fondamentalement, je veux intercepter la demande et modifier ses paramètres avant qu'ils n'atteignent le côté serveur. Merci.

Répondre

1

Regardez beforeSend(XMLHttpRequest)

Un pré-rappel pour modifier l'objet XMLHttpRequest avant qu'il ne soit envoyé . Utilisez ceci pour définir les en-têtes personnalisés , etc. Le XMLHttpRequest est passé comme le seul argument. Ceci est un événement Ajax . Vous pouvez retourner faux en fonction pour annuler la demande

Vous devriez pouvoir l'utiliser avec ajaxSetup

1

Essayez de mettre les suivantes quelque part dans votre code avant toute demande AJAX serait exécutée:

$.ajaxSetup({ 
    beforeSend: function(xhr) { 
     var newUrl = this.url; 
     if (newUrl.indexOf("?") != -1) { 
      newUrl = newUrl + '&jquery=true'; 
     } else { 
      newUrl = newUrl + '?jquery=true';     
     } 
     xhr.open(this.type, newUrl, this.async); 
    } 
}); 

Ceci déclenchera une fonction avant l'envoi de toute requête AJAX. La fonction détermine ce que la nouvelle URL doit être (en fonction de si une chaîne de requête a déjà été attachée), puis rouvre le XMLHttpRequest avec le 'jquery = true' attaché à la fin.

Voici une démo de fonctionnement de ceci: http://jsfiddle.net/uz9zg/

Questions connexes