2012-01-11 9 views
2
$.ajax({ 
       async:false, 
       type: 'POST', 
       url: itemURL, 
       success: function(data,status,jqXHR) { 
        responseObj = data; 
        console.log('success function resp'); 
        console.log(jqXHR.getAllResponseHeaders()); 
       }, 
       error: function(data){ 
        responseObj = data; 
       }, 
       data:item, 
       dataType: "json", 

    }); 

私のコードはここにあります。応答ヘッダーを印刷できません。何かが足りない?印刷されるのは空の文字列です。jquery:Ajaxレスポンスヘッダを印刷できません(Jquery 1.7.1)

getResponseHeader( "Location")を使って試してみましたが、どちらも動作していません。私はAJAX呼び出しのために返されている "Location"ヘッダーを取得しようとしています。

しかし、firbeugは、私が後にしている "Location"を含むすべての応答ヘッダーを表示します。私は

+1

リダイレクトされ、最終応答にはロケーションヘッダーがまったくありません。 – ThiefMaster

+0

データ型によって問題が発生している可能性があります。http://stackoverflow.com/questions/5614735/jqxhr-getallresponseheaders-wont-return-all-headers – Jon

+0

@Jon dataTypeは問題ではありません。 json、application/jsonを試しました。まだ問題は残っています。私はそれが "Location"ヘッダーと関係があると思います – Satish

答えて

2

jQueryの1.7.1を使用しています

私はこの質問に答えるために助けに@Satishで働いていました。これは基本的にCORSの問題でしたが、ここには2つの問題がありました:

1)サーバはAccess-Control-Expose-Headerレスポンスヘッダに 'Location'を追加する必要がありました。これにより、XHRレベル-2のクライアントは余分のヘッダーを表示します。

2)WebKitクライアントにはがあり、XHR応答のヘッダーを返すときにAccess-Control-Expose-Headerを無視するバグがありました。これは最近、WebKitのhttps://bugs.webkit.org/show_bug.cgi?id=76419で修正され、WebKitに基づいてSafariで動作することが確認されました。

バックグラウンドを追加するだけで、リクエストはRESTサービスにPOSTしてオブジェクトを作成していました。サーバーレスポンスのステータスは201で、新しいリソースの場所が 'Location'ヘッダーに格納されています。これがCORS要求であったため、XHRは 'Location'ヘッダーを削除していました。この問題を修正したヘッダーを追加し、WebKitのバージョンにアップグレードする。

関連する問題