在x-www-form-urlencoded中从jqGrid接收编辑/添加数据时,我需要application/json



我正在尝试将我的jqGrid链接到我的Java Rest服务。当我将编辑/添加数据从jqGrid发送到我的rest,以便为DB CRUD操作处理它时,我收到的是这样的:

"nume=Alin&prenume=Dan&sefDepartament=Yes&position=position+2&joinYear=2015-08-11&oper=edit&id=2"

我需要以JSON格式接收它。我怎样才能做到这一点?

这是我的Java代码:

@Path("/update")
public class UpdateDatabase {
@POST
public String updateDatabase(String data){
    System.out.println(data);
}

这是我关于服务器连接的jqGrid设置:

 grid.jqGrid({
    pager: '#pager', 
    mtype: "POST",
    url: "/RestWithDatabaseConnection/rest/fetchData",
    editurl:'/RestWithDatabaseConnection/rest/update',
    datatype: "json",

请告诉我是否应该添加一些其他信息。

要发送以JSON格式编码的编辑结果,应该使用

  1. 在HTTP标头中设置Content-Type: application/json
  2. 使用JSON.stringify对发布的数据进行编码

如果您使用免费的jqGrid,那么您可以使用以下inlineEditing选项,这些选项是jqGrid的选项(与editurl处于同一级别)

inlineEditing: {
    ajaxSaveOptions: { contentType: "application/json" },
    serializeSaveData: function (postData) {
        return JSON.stringify(postData);
    }
}

如果使用旧的jqGrid版本,您可以以几乎相同的方式使用jqGrid选项ajaxRowOptionsserializeRowData

ajaxRowOptions: { contentType: "application/json" },
serializeRowData: function (postData) {
    return JSON.stringify(postData);
}

Free jqGrid支持jqGridInlineSerializeSaveData事件作为serializeSaveDataserializeRowData回调的替代。它在更高级的场景中很有帮助。由于兼容性原因,免费jqGrid也支持选项ajaxRowOptionsserializeRowData

我建议您考虑使用免费的jqGrid 4.12.0或GitHub的最新源代码。主要新功能和错误修复的列表通常在自述文件中进行描述。

相关内容

最新更新