0

下面是我的 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"
        });

在网格上显示数据没有问题。但是,在我的网络服务中,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 冲突?

任何人都可以建议?我需要他们两个一起工作。

谢谢!

4

1 回答 1

0

解决了我的问题。对不起新手。

将内容设置为 json 后,将不会有 post 数据。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") 等获取发布的数据...

希望这可以帮助某人。

谢谢。

于 2014-03-10T10:21:01.507 回答