代码之家  ›  专栏  ›  技术社区  ›  Nigel

设置jquery jqgrid执行的请求的内容类型

  •  22
  • Nigel  · 技术社区  · 16 年前

    我使用的是最新版本的 jqGrid 3.3.4

    这似乎是一个简单的问题(或者至少在我花了几个小时研究它之前就已经有了):

    当网格向服务器(向控制器操作)发送请求时,其内容类型始终为:

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

    我希望是:

    application/json; charset=utf-8
    

    但是我找不到设置内容类型的方法(例如,在$.ajax调用中,没有ContentType选项)。

    所以为了澄清一下,我并不是在询问如何在jquery服务器请求上设置内容类型,而是专门使用jqgrid,它并没有提供一个明显的选项来实现这一点。

    谢谢,奈吉尔。

    更新: 奥列格的反应解决了问题。

    以下是网格的选项设置:

    jQuery("#ContactGridList").jqGrid({
            url: '/ContactSelect/GridData/',
            datatype: 'json',
            ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
            mtype: 'POST',
            ...
    
    1 回复  |  直到 14 年前
        1
  •  26
  •   Oleg    14 年前

    如何在代码中找到 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));
    

    所以你可以使用 ajaxGridOptions jqgrid选项设置或覆盖 阿贾克斯 请求。因为我只对服务器使用JSON请求,所以我将 contentType 喜欢

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

    这个 ajaxRowOptions 用于 网格.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 . 参数 Ajax选择选项 如果你使用 dataUrl 参数位于 editoptions searchoptions . 例如,我使用, 数据手套 里面 colModel 用于定义类型的列 edittype: 'select' . select选项的可能值将从服务器加载,以进行内联或表单编辑,或在搜索对话框中加载。因为这样的数据加载是使用Ajax的,所以 Ajax选择选项 选择权。

    最好的问候。

    推荐文章