web-dev-qa-db-ja.com

jQueryjqGridによって実行されるリクエストのコンテンツタイプの設定

最新バージョンの jqGrid :3.6.4を使用しています

これは単純な問題のようです(または、少なくとも数時間費やす前に問題が発生しました)。

グリッドがサーバーに(コントローラーアクションに)要求を送信するとき、そのコンテンツタイプは常に次のとおりです。

application/x-www-form-urlencoded; charset=UTF-8

そして私はそれをしたいと思います:

application/json; charset=utf-8

しかし、content-typeを設定する方法が見つかりません(たとえば、$。ajax呼び出しで見られるようなcontentTypeオプションはありません)。

したがって、明確にするために、jQueryサーバー要求でcontent-typeを設定する方法を尋ねているのではなく、具体的にはjqGridを使用しています。これは、これを行うための明確なオプションを提供していません。

ありがとう、ナイジェル。

更新:修正されたOlegの応答はそれを解決しました。

グリッドのオプション設定は次のとおりです。

jQuery("#ContactGridList").jqGrid({
        url: '/ContactSelect/GridData/',
        datatype: 'json',
        ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
        mtype: 'POST',
        ...
22
Nigel

grid.base.jsのコードでどのように見つけることができるかグリッドに含まれる_$.ajax_呼び出しは次のようになります。

_$.ajax($.extend({
    url: ts.p.url,
    type: ts.p.mtype,
    dataType: dt,
    data: $.isFunction(ts.p.serializeGridData) ?
             ts.p.serializeGridData.call(ts, ts.p.postData) : ts.p.postData,
    complete: function (req, st) {
       ...
    }
    ...
}, $.jgrid.ajaxOptions, ts.p.ajaxGridOptions));
_

したがって、jqGridのajaxGridOptionsオプションを使用して、_$.ajax_リクエストの任意のパラメーターを設定またはオーバーライドできます。サーバーへのJSONリクエストのみを使用するため、contentTypeの一般設定を次のように設定します。

_$.extend($.jgrid.defaults, {
    datatype: 'json',
    {ajaxGridOptions: { contentType: "application/json" },
    {ajaxRowOptions: { contentType: "application/json", type: "PUT" },
    ...
});
_

ajaxRowOptionsは、行編集のためにgrid.inlinedit.jsで使用されます。フォーム編集には、グローバル設定としても設定した他のパラメーターがあります。

_$.extend($.jgrid.edit, {
    ajaxEditOptions: { contentType: "application/json" },
    ...
});

$.extend($.jgrid.del, {
    ajaxDelOptions: { contentType: "application/json" },
    mtype: "DELETE",
    ...
});
_

私のサーバーを確認する方法は、RESTfullサービスです(主にWFCで開発され、残りはASP.NET MVCで開発されています)。 _$.jgrid.edit_は「追加」と「変更」の両方の項目の設定であるため、「編集」のみの_mtype: "PUT"_を変更できなかったため、navGrid()のパラメーターでこれを行います。

設定するのも興味深いと思われる最後のajaxパラメーターはajaxSelectOptionsです。 ajaxGridOptionsと同じ方法で設定できます。 ajaxSelectOptionsのパラメーターは、dataUrlまたはeditoptions内でsearchoptionsパラメーターを使用する場合に役立ちます。たとえば、タイプ_edittype: 'select'_の列を定義するために、dataUrl内のcolModelを使用します。 selectオプションの可能な値は、インラインまたはフォーム編集のために、または検索ダイアログ内でサーバーからロードされます。このようなデータの読み込みにはajaxが使用されるため、対応するajaxSelectOptionsオプションがあります。

宜しくお願いします。

26
Oleg