2013-03-11 31 views
7

これは簡単な質問かもしれませんが、私はまだそれを並べ替える方法を見つけていません。私は、AJAX呼び出しによって(ASP.NETのWeb APIで実装)サーバからCSVファイルをダウンロードしたいと思います:jQuery ajaxでtext/csvでAcceptヘッダーを追加するには

$.ajax({ 
    type: "GET", 
    accepts: "text/csv; charset=utf-8", 
    url: "/api/employees", 
    success: function (data) { 
    } 
}); 

私は上記のようなjQueryのAJAXのヘッダを受け入れ入れています。しかし、シオマネキから、私は以下を参照してください。

enter image description here

ザ・今ヘッダーを受け入れAccept: undefinedになります。私が入れしようとした場合:

accepts: { 
     csv: "text/csv; charset=utf-8" 
    } 

ザ・今ヘッダーを受け入れになります:

enter image description here

Accept: */*

は、だから私はそれが私のサーバーは、CSVファイルではなくJSONオブジェクトを返すようにする主なポイントだと思います。

jQuery ajaxでAccepts Headerを正しく作成するにはどうすればよいですか?フィドラーで参照してください: Accept: text/csv

私はクロムを使用しています。

答えて

6

はdakaitの答えが正しいですが、私はそれをクリーンアップし、説明を提供します

$.ajax({ 
    headers: { 
     Accept : "text/csv; charset=utf-8", 
     "Content-Type": "text/csv; charset=utf-8" 
    } 
... 
+5

ありがとう、それは動作します。しかし、なぜ私が与えた2つの選択肢がうまくいかなかったのか分かりません –

3

を試してみてください。

$.ajax({ 
    url: '/path', 
    headers:{ 'Accept': 'text/csv', 
      'Content-Type': 'text/csv' }, 
    ... 

上記の例では、2つのヘッダーを明示的に設定しています。

jQueryは、accepts(Acceptではない)とdataTypeフィールドに基づいて、AcceptとContent-Typeヘッダーを処理する独自のロジックを持っていると思います。

したがって、dataTypeが空白の場合(csvはサポートされているデータ型ではないため)、Acceptヘッダーを設定してもparamを受け入れる場合でもAcceptヘッダーは表示されません。

これは直感的なインターフェイスではないようですが、多くの人にとってうまく機能します。私はドキュメンテーションがうまくいけばそれほど混乱を起こさないだろうと思う。

関連する問題