当contentType = application / json时,Jquery JQGrid会中断?

时间:2010-05-16 21:11:15

标签: jquery json jqgrid content-type

我必须使用$ .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使用什么contenttype?

我在jqrid wiki上搜索过,但没有太多关于任何内容的文档。

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

2 个答案:

答案 0 :(得分:3)

首先,我可以转发我的旧答案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服务方法的原型。< / p>

答案 1 :(得分:0)

当你设置jqGrid或它的数据源时,将它设置为dataType为JSON("json"),如下所示:

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

You can see an example on code project as well