最新バージョンの 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',
...
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
オプションがあります。
宜しくお願いします。