66

Chrome コンソールで次のコードを調べると、リクエスト ヘッダーが表示されますAccept:undefined

jQuery.ajax({
        url: _this.attr('href'),
        accepts: "application/json; charset=utf-8",
        
    });
});

受け入れタイプを JSON として設定するにはどうすればよいですか。カスタムヘッダーを設定したくない、または使用したくないbeforeSend

4

8 に答える 8

35

受け入れヘッダーを設定するには、次の2つの方法があります。

1) setRequestHeader('Accept','application/json; charset=utf-8');

2) $.ajax({
    dataType: ($.browser.msie) ? "text" : "json",
    accepts: {
        text: "application/json"
    }
});
于 2012-09-10T08:02:49.203 に答える
12

他の回答は実際の質問には答えませんが、パラメーターの正しい構文を理解するのに文字通り10秒かかるため、残念な回避策を提供しacceptsます。

このパラメーターは、ヘッダーacceptsにマップするオブジェクトを受け取ります。あなたの場合、データ型をに設定するだけで十分なため、オブジェクトを渡す必要さえありません。ただし、カスタムヘッダーを構成したい場合は、次のようにします。dataTypeAcceptacceptsjsonAccept

accepts: {"*": "my custom mime type" },

どうすればわかりますか?jquery のソース コードを開き、「accepts」を検索します。最初の発見は、あなたが知る必要があるすべてを教えてくれます:

    accepts: {
        "*": allTypes,
        text: "text/plain",
        html: "text/html",
        xml: "application/xml, text/xml",
        json: "application/json, text/javascript"
    },

textご覧のとおり、 、htmlxmlおよびjsonデータ型へのデフォルトのマッピングです。

于 2015-09-30T17:28:48.027 に答える
6

それらのいくつかは正しいものですが、以前の回答はかなり混乱していることに気付きました。同時に、OPはカスタムヘッダーを設定したり、を使用したりせずに解決策を求めたbeforeSendので、より明確な説明を探しています。私の結論が他の人に何らかの光を提供することを願っています.

コード

jQuery.ajax({
    .... 
    accepts: "application/json; charset=utf-8",
    ....
});

jQuery doc ( https://api.jquery.com/jquery.ajax/ )によると( ではない)acceptsでなければならないため、機能しません。具体的には、jQueryは、受け入れられた MIME タイプとそれぞれを関連付ける 0 個以上のキーと値のペアを想定しています。だから私が最終的に使用したのは次のとおりです。PlainObjectStringdataType

jQuery.ajax({
    ....
    dataType: 'json',
    accepts: {
        json: 'application/json'
    },
    ....
});
于 2014-10-23T15:56:27.933 に答える
5

すでにacceptsパラメーターを必要なものとして識別しており、keyurはそれを設定する正しい方法を示していますが、DataTypeを「json」に設定すると、acceptsのデフォルト値が必要な値に自動的に設定されますjQueryリファレンスに従って。したがって、必要なのは次のとおりです。

jQuery.ajax({
    url: _this.attr('href'),
    dataType: "json"
});
于 2014-01-23T16:48:40.270 に答える