jqGrid没有加载并且错误地指出它的无效xml,但是数据是JSON

时间:2013-10-11 17:18:13

标签: ajax json jqgrid

我上传了jqGrid错误如下:

  

加载错误:错误:XML无效:{“d”:[{“id”:1,“name”:“Medical   1" , “城市”: “基辅”, “instituteTypeId”:0},{ “ID”:2, “名”:“医疗   2" , “城市”: “赫尔松”, “instituteTypeId”:0}]}

然而我使用JSON,oleg建议我开启新的威胁。

jquery代码是:

  mtype: 'POST',
  contentType: "application/json",
  url: "dataServices/objects.asmx/InvokeData",
  ajaxGridOptions: {
      contentType: 'application/json; charset=utf-8'
  },
     postData: JSON.stringify({q: "med&1"}),
                loadonce: true,
                dataType: 'json',
                jsonReader: {
                    root: function (obj) {
                        alert(obj.d);
                        return obj.d;
                    },
                    page: "",
                    total: "",
                    records: function (obj) {
                        return obj.d.length;
                    },
                },
                gridview: true,
                loadError: function (xhr, status, error) {
                    alert('load error: ' + error);
                },

没有dataType = xml或任何定义....

1 个答案:

答案 0 :(得分:3)

您使用错误的dataType: 'json'。 jqGrid有datatype选项而没有dataType。所以你应该使用dataType: 'json'。将忽略未知选项dataType,并将使用默认选项dataType: 'xml'

此外,我认为你应该只使用jsonReader: { root: "d" }

The demo应该接近你所需要的。所以你应该做类似

的事情
$("#list").jqGrid({
    mtype: 'POST',
    url: "dataServices/objects.asmx/InvokeData",
    datatype: "json",
    ajaxGridOptions: {
        contentType: "application/json; charset=utf-8"
    },
    postData: JSON.stringify({q: "med&1"}),
    loadonce: true,
    jsonReader: { root: "d" }
    ...
});