remove div code change jquery jqgrid content-type

div - Establecer el tipo de contenido de las solicitudes realizadas por jQuery jqGrid



jquery remove (1)

Estoy usando la última versión de jqGrid : 3.6.4

Esto parece un problema simple (o al menos lo hizo antes de pasar unas horas en él):

Cuando la grilla envía una solicitud al servidor (a una acción del controlador), su tipo de contenido siempre es:

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

y me gustaría que fuera:

application/json; charset=utf-8

pero no puedo encontrar la forma de configurar el tipo de contenido (no hay una opción contentType como encontraría en una llamada $ .ajax, por ejemplo).

Solo para aclarar, no estoy preguntando cómo configurar el tipo de contenido en una solicitud del servidor jQuery, sino específicamente usando jqGrid, que no proporciona una opción obvia para hacerlo.

Gracias, Nigel.

Actualización: la respuesta de Oleg lo solucionó.

Aquí están las configuraciones de opciones para la grilla:

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


Cómo puede encontrar en el código de grid.base.js que la llamada $.ajax llena la grilla contiene lo siguiente:

$.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));

Entonces puede usar la opción ajaxGridOptions de jqGrid para establecer o anular cualquier parámetro de la solicitud $.ajax . Como utilizo solo solicitudes JSON en mi servidor, establezco la configuración general de contentType como

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

Las ajaxRowOptions se utilizan en grid.inlinedit.js para la edición de filas. Para la edición del formulario hay otros parámetros, que también configuro como configuración global:

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

Cómo puede ver que mi servidor es un servicio RESTfull (desarrollado principalmente en WFC y el resto en ASP.NET MVC). Como $.jgrid.edit es una configuración para los elementos "agregar" y "modificar", no pude cambiar mtype: "PUT" para "editar" solamente, así que hago esto en los parámetros de navGrid() .

El último parámetro ajax que puede encontrar también interesante de establecer es ajaxSelectOptions . Puede configurarlo de la misma manera que ajaxGridOptions . Los parámetros de ajaxSelectOptions son útiles si usa el parámetro dataUrl dentro de editoptions o searchoptions . Utilizo, por ejemplo, dataUrl dentro de colModel para definir columnas del tipo edittype: ''select'' . Los valores posibles de la opción de selección se cargarán desde el servidor para la edición en línea o en forma o dentro del diálogo de búsqueda. Porque para tal carga de datos se utilizan ajax, existe la opción correspondiente ajaxSelectOptions .

Atentamente.