【问题标题】:Jquery JQGrid breaks when contentType=application/json?当contentType = application / json时Jquery JQGrid中断?
【发布时间】:2011-02-20 04:33:47
【问题描述】:

我不得不使用 $.ajaxSetup() 将 contentType 全局更改为 application/json

$.ajaxSetup({
  contentType: "application/json; charset=utf-8"
});

(请参阅这个问题了解为什么我必须使用 application/json ASPNET MVC - Why is ModelState.IsValid false "The x field is required" when that field does have a value?

但这会破坏 jquery jqrid 并出现此错误:

Invalid JSON primitive: _search

它试图发送的 POST 数据是:

_search=false&nd=1274042681880&rows=20&page=1&sidx=&sord=asc

哪个不是json格式的,所以当然会失败。无论如何要告诉 jqrid 使用什么内容类型?

我在 jqrid wiki 上进行了搜索,但实际上并没有太多关于任何内容的文档。

http://www.trirand.com/jqgridwiki/doku.php?do=search&id=contenttype&fulltext=Search

【问题讨论】:

  • 我可能使用的解决方案是没有 $.ajaxSetup,并将任何必须是 application/json 的 $.post() 转换为 $.ajax() 调用。跨度>

标签: jquery json jqgrid content-type


【解决方案1】:

首先,我可以将我的旧答案Setting the content-type of requests performed by jQuery jqGrid 转发给您。它显示了 ajax 请求在 jqGrid 内部的样子。所以你应该使用jqGrid的ajaxGridOptions参数而不是覆盖$.ajaxSetup的全局设置。

此外,在同一个答案中,您可以看到 jqGrid 的 serializeGridData 参数如何用于进行自定义序列化。在How do I build a JSON object to send to an AJAX WebService? 中,您可以阅读参数的 JSON 编码应该是什么样子。

如果您仍然无法使用serializeGridDataajaxGridOptions,您应该在问题中包含使用jqGrid 的代码片段以及您使用的Web 服务的服务器方法原型。

【讨论】:

    【解决方案2】:

    在设置 jqGrid 或其数据源时,将其 dataType 设置为 JSON ("json"),如下所示:

    $("#myTable").jqGrid ({
      //other options...
      dataType : 'json'
    });
    

    You can see an example on code project as well.

    【讨论】:

    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 2011-02-20
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-24
    • 1970-01-01
    • 2014-04-27
    相关资源
    最近更新 更多