Comment pouvons-nous accéder aux en-têtes de réponse lorsque nous envoyons une requête ajax à l'aide de jQuery? J'ai essayé avec le code ci-dessous selon les suggestions données dans certains sites. Mais xhr
object arrive comme null. Je vois un objet xhr
dans ce contexte. Mais il ne dispose pas de méthodes pour accéder aux en-têtes de réponse.
function SampleMethod(){
var savedThis=this;
this.invokeProcedure=function(procedurePath){
$.ajax({
type: "GET",
url: procedurePath,
dataType: "json",
success: function(data,status,xhr){savedThis.resultSetHandler(data,status,xhr);}
});
}
this.resultSetHandler=function(data,status,xhrObj){
//Handle the result
}
this.errorHandler=function(args){
//Handle the result
}
}
var sampleObj=new SampleMethod();
sampleObj.invokeProcedure('url');
Pour assurer la compatibilité ascendante avec XMLHttpRequest, un objet jqXHR sera exposez les méthodes et les propriétés suivantes: getAllResponseHeaders () et getResponseHeader () . Depuis le doc $ .ajax (): http://api.jquery.com/jQuery.ajax/
Pour jQuery> 1.3
success: function(res, status, xhr) {
alert(xhr.getResponseHeader("myHeader"));
}
MISE À JOUR 2018 POUR JQUERY 3 ET PLUS -
Je sais que c'est une vieille question, mais j'espère que cette solution aidera ceux qui ne peuvent pas trouver de solution. Voici la solution qui a fonctionné pour moi:
//I only created this function as I am making many ajax calls with different urls and appending the result to different divs
function makeAjaxCall(requestType, urlTo, resultAreaId){
var jqxhr = $.ajax({
type: requestType,
url: urlTo
});
//this section is executed when the server responds with no error
jqxhr.done(function(){
});
//this section is executed when the server responds with error
jqxhr.fail(function(){
})
//this section is always executed
jqxhr.always(function(){
//here is how to access the response header
console.log("getting header " + jqxhr.getResponseHeader('testHeader'));
});
}