web-dev-qa-db-fra.com

jQuery - get AJAX en-têtes de réponse

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');
35
Apps

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"));
}
70
odupont

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'));
        });
    }
0
sticky_elbows