49

jQueryを使用してajaxリクエストを起動するときに、応答ヘッダーにアクセスするにはどうすればよいですか?私はいくつかのサイトで与えられた提案に従って以下のコードで試しました。しかし、xhrオブジェクトはnullとして来ています。xhrこのコンテキストでオブジェクトが表示されます。ただし、応答ヘッダーにアクセスするためのメソッドはありません。

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');
4

2 に答える 2

90

XMLHttpRequestとの下位互換性のために、jqXHRオブジェクトは次のプロパティとメソッドを公開します:getAllResponseHeaders() および getResponseHeader()。$ .ajax()ドキュメントから:http://api.jquery.com/jQuery.ajax/

jQuery>1.3の場合

success: function(res, status, xhr) { 
  alert(xhr.getResponseHeader("myHeader"));
}
于 2012-07-12T20:16:47.910 に答える
3

JQUERY3以降の場合

これが私のために働いた解決策です:

//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'));
  });
}
于 2018-11-20T11:22:42.273 に答える