使用JSON调用时,jqGrid为空

时间:2012-02-24 02:31:37

标签: jqgrid

我的jqGrid在JSON调用时变空了。虽然它使用datatype ='jsonstring'但不使用json类型。这是我的JSON

{
    "d": {
        "total": 6,
        "page": 1,
        "records": 6,
        "rows": [
            {
                "id": 1,
                "Name": "James",
                "EMPID": "0000000056",
                "EMPDATE": "",
                "JOBTYPE": "REQ",
                "DEPTID": "FIN",
                "STATUS": "P1"
            },
            {
                "id": 2,
                "Name": "James",
                "EMPID": "R2",
                "EMPDATE": "",
                "JOBTYPE": "REQ",
                "DEPTID": "FIN",
                "STATUS": "P1"
            },
            {
                "id": 3,
                "Name": "James",
                "EMPID": "V2",
                "EMPDATE": "",
                "JOBTYPE": "VOU",
                "DEPTID": "FIN",
                "STATUS": ""
            },
            {
                "id": 4,
                "Name": "James",
                "EMPID": "V1",
                "EMPDATE": "",
                "JOBTYPE": "VOU",
                "DEPTID": "FIN",
                "STATUS": ""
            },
            {
                "id": 5,
                "Name": "James",
                "EMPID": "009017",
                "EMPDATE": "",
                "JOBTYPE": "PY",
                "DEPTID": "",
                "STATUS": "V2"
            },
            {
                "id": 6,
                "Name": "James",
                "EMPID": "009018",
                "EMPDATE": "",
                "JOBTYPE": "PY",
                "DEPTID": "",
                "STATUS": "V1"
            }
        ]
    }
}

我从javascript调用jqGrid是

function getgrid()
    {

    $("#list").jqGrid({
     url:'http://10.240.26.41/GetGridFields',
    datatype: 'json',
    mtype: 'GET',
    ajaxGridOptions: { contentType: 'application/json; charset=utf-8' },
    //serializeGridData: function (postData) {
    //    return JSON.stringify(postData);
    //     },
    jsonReader: { repeatitems: false, root: "d.rows", page: "d.page", total: "d.total",   records: "d.records" },
    colModel: [
        { name: 'id', key: true, width: 60, align: "center", hidden: false },
        { name: 'Name', width: 80, sortable: false, hidden: false },
        { name: 'EMPID', width: 180, sortable: false, hidden: false },
        { name: 'EMPDATE', width: 180, sortable: false, hidden: false },

        { name: 'JOBTYPE', width: 180, sortable: false, hidden: false },
        { name: 'DEPTID', width: 180, sortable: false, hidden: false },
        { name: 'STATUS', width: 180, sortable: false, hidden: false }
    ],
    rowNum: 10,
    rowList: [10, 20, 300],
    pager: "#pager",
    viewrecords: true,
    gridview: true,
    rownumbers: true,
    height: 230,
    caption: 'Emp Detail'
    })

    }

请告诉我这里的错误。它与jsonstring一起工作正常。

2 个答案:

答案 0 :(得分:0)

我建议您使用jslint验证您的json结果,因为使用jsonstring工作可能是格式类型问题

答案 1 :(得分:0)

如何在the demo上看到你的jqGrid可以读取你的JSON数据。我在演示中只做了最小的优化更改,这对您的主要问题并不重要。

所以我想,你有使用完整URL的问题(你应该使用'/GetGridFields'而不是'http://10.240.26.41/GetGridFields'),因为你无法通过Ajax调用另一个IP主机the same origin policy。另一个可能的原因是您有错误的'Content-Type'或其他HTTP标头。您可以检查关于FiddlerFirebug或仅使用IE或Chrome的开发人员工具的HTTP标头(请参阅“网络”标签)。

无论如何,我建议你将loadError处理程序包含到jqGrid中。有关详细信息,请参阅the answer