与ajaxGridOptions一起使用时,jqGrid postData为空

时间:2014-03-05 15:05:12

标签: jquery jqgrid postdata

以下是我的jqGrid初始化:

            jQuery("#dataGrid").jqGrid({
            jsonReader : {
              root:"rows",
              page: "page",
              total: "total",
              records: "records",
              cell: "",
              id: "0" 
           },
           postData: {
           page: function() { return page; }
           },
            url: 'WebService.asmx/GetData',
            datatype: "json",
            mtype: "POST",
            ajaxGridOptions: {
               contentType: "application/json; charset=utf-8"
            },
            serializeGridData: function (data) {
                return JSON.stringify(data);
            },
            colNames: [<%= colName %>],
            colModel: [<%= colModal %>],
            rowNum: 10,
            rowList: [10, 20, 30],
           pager: '#dataGrid_Pager',
            sortname: 'name',
            viewrecords: true,
            sortorder: "name",
            caption: "JSON Example"
        });

在网格上显示数据没有问题。但是,在我的Web服务中,postData为空。即context.request.form(0)为空。

当我从代码中删除它时:

ajaxGridOptions: {
               contentType: "application/json; charset=utf-8"
            },
当我向context.request.form(0)添加一个监视时,

postData包含这个:

{"page":1,"_search":false,"nd":1394031676148,"rows":10,"sidx":"name","sord":"name"}

但是现在,网格是空的,没有网格数据。

似乎postData与ajaxGridOptions相冲突?

任何人都可以提供建议吗?我需要他们俩一起工作。

谢谢!

1 个答案:

答案 0 :(得分:0)

解决了我的问题。抱歉新手。

将内容设置为json后,将不会有任何帖子数据。 JSON回复实际上在context.request.inputStream中。

您可以通过以下方式将数据转换为对象来获取数据:

Dim jss As New JavaScriptSerializer
    Context.Request.InputStream.Position = 0
    Dim sr As New StreamReader(Context.Request.InputStream)
    Dim jsonString As String = sr.ReadToEnd()
    Dim jsObj As Object = jss.DeserializeObject(jsonString)

您可以通过执行jsObj(“page”),jsObj(“_ search”)等来获取数据...

希望这有助于某人。

感谢。