我正在尝试两个版本的代码,一个是本地数据类型,另一个是json数据类型。我要做的就是使用此行console.log(texts)
将数据打印到控制台日志。但是,仅当数据类型为本地时才会打印到控制台。下面是代码的两个版本,本地数据类型和json数据类型。两个版本都相似,只更改了dataTypes。我最后打电话给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');
});
答案 0 :(得分:1)
您应该包含来自网址'someUrlToGetData'
的服务器响应。此外,您应该在分配变量someFunc
之前声明它:var someFunc = function(columnName) { ... };
对于您的主要问题:如果服务器正确生成jqGrid的JSON数据(请参阅the documentation),那么您应该在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');
}
});
问题是代码是异步工作的。如果您创建了具有datatype: "json"
的网格,那么将对jqGrid的url
选项指定的URL进行Ajax调用。