0

我正在尝试两种版本的代码,一种是本地数据类型,另一种是 json 数据类型。我要做的就是将数据打印到控制台日志,使用这一行console.log(texts)。但是,仅当数据类型为本地时才打印到控制台。下面是两个版本的代码,本地数据类型和json数据类型。两个版本都相似,只是数据类型发生了变化。我someFunc最后打电话来打印数据

本地数据类型

$(document).ready(function() {
    var mydata = [
     {id: "1", name: "someone"}
    ]
    someFunc = function(columnName) {
         var texts = jQuery("#myGrid").jqGrid('getCol',columnName);
         console.log(texts); //is printing only when datatype is local
    };
    jQuery("#myGrid").jqGrid(
        {
            autoencode:true,
            mtype: 'GET',
            datatype : 'local',
            data: mydata,                   
            colModel : [ 
                {name: 'name', index: 'Name'}
            ]
    });
    jQuery("#mygrid").jqGrid('navGrid', '#pager', {
        edit : false,
        add : false,
        del : false,
        search : true
    }, {}, {}, {}, {
        sopt : [ 'eq', 'ne', 'lt', 'gt', 'cn', 'bw', 'ew' ],
        closeOnEscape : true,
        multipleSearch : true,
        closeAfterSearch : true
    });   
    someFunc('name');
});     

Json 数据类型

$(document).ready(function() {
    someFunc = function(columnName) {
         var texts = jQuery("#myGrid").jqGrid('getCol',columnName);
         console.log(texts); //is printing only when datatype is local
    };
    jQuery("#myGrid").jqGrid(
        {
            url : 'someUrlToGetData',
            autoencode:true,
            mtype: 'GET',
            datatype: 'json',

            colModel : [ 
                {name: 'name', index: 'Name'}
            ]
    });
    jQuery("#mygrid").jqGrid('navGrid', '#pager', {
        edit : false,
        add : false,
        del : false,
        search : true
    }, {}, {}, {}, {
        sopt : [ 'eq', 'ne', 'lt', 'gt', 'cn', 'bw', 'ew' ],
        closeOnEscape : true,
        multipleSearch : true,
        closeAfterSearch : true
    });   
    someFunc('name');
});     
4

1 回答 1

1

您应该包含来自 URL 的服务器响应'someUrlToGetData'someFunc此外,您应该在分配变量之前声明它:var someFunc = function(columnName) { ... };

对于您的主要问题:如果服务器正确为 jqGrid 生成 JSON 数据(请参阅文档),那么您应该只将调用移动到回调someFunc('name');内部。loadComplete

jQuery("#myGrid").jqGrid({
    url : 'someUrlToGetData',
    autoencode:true,
    mtype: 'GET',
    datatype: 'json',
    colModel : [ 
        {name: 'name', index: 'Name'}
    ],
    gridview: true,
    loadComplete: function () {
        someFunc('name');
    }
});

问题是代码异步工作。如果您创建网格,那么将对jqGrid 选项datatype: "json"指定的 URL 进行 Ajax 调用。url

于 2012-11-12T15:42:02.843 回答