Selon the documentation, la méthode beforeSend()
est passé l'objet XMLHttpRequest
comme paramètre, et son pointeur this
est réglé sur les options de demande Ajax. Le XMLHttpRequest
n'a pas un attribut qui est l'URL, mais le W3C documentation semble dire que peut être appelé plusieurs fois sur une instance donnée méthode open()
de l'objet:
beforeSend: function(xhr) {
// if you're doing authenticated requests, you might have to
// call the 5-argument form of open() instead
xhr.open(this.type, this.url.replace(/* whatever with whatever... */), this.async);
}
Un problème potentiel avec ce faire est que l'appel open()
efface tous les en-têtes de demande qui ont été définis, donc vous devrez peut-être ajouter du code supplémentaire pour ajouter à nouveau les en-têtes que jQuery définit avant d'appeler beforeSend()
.
EDIT: Effectivement. Maintenant que j'ai jeté un oeil au jQuery source, vous avez raison: l'URL est définie avant que la méthode beforeSend()
ne soit invoquée. J'espère que les révisions ci-dessus fonctionneront pour vous.
C'est ce que j'ai essayé en premier, mais l'objet XMLHttpRequest a déjà été construit à ce moment-là et donc l'édition de l'URL dans les options de requête ne fonctionne pas. J'ai besoin d'éditer l'instance 'xhr' passée. – psychotik