设置由jQuery jqGrid执行的请求的内容类型

我正在使用最新版本的 jqGrid:3.6.4

这似乎是一个简单的问题(或至少在我花了几个小时之前)

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

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

我希望是:

application/json; charset=utf-8

但是我没有办法设置内容类型(没有contentType选项,例如您可以在$ .ajax调用中找到)。

所以只是为了澄清,我不是问如何在jQuery服务器请求上设置内容类型,而是特别使用jqGrid,这并不能提供一个明显的选择。

谢谢,Nigel。

更新:
奥列格的答复解决了它。

以下是网格的选项设置:

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”用于“edit”,所以我在navGrid()的参数中执行此操作。

你可以找到的最后一个ajax参数也很有意思是ajaxSelectOptions。您可以以与ajaxGridOptions相同的方式进行设置。如果在editoptions或searchoptions中使用dataUrl参数,则ajaxSelectOptions的参数很有用。例如,我使用colModel里面的dataUrl来定义类型为edittype的列:’select’。 select选项的可能值将从服务器加载到内联或表单编辑或搜索对话框内。因为这样的数据加载使用ajax,所以有相应的ajaxSelectOptions选项。

最好的祝福。

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...