问题是这样:我初始化一个jqgrid,但不使用postData,并设置hiddengrid:true,
我想在没有请求的情况下初始化表,然后手动请求数据,
日本
var showRoleList = function($entityList,pagerId)
{
$entityList.jqGrid({
url:'servlet/RoleAction',
datatype: 'json',
height: 'auto',
jsonReader:
{
repeatitems : false,
userdata: "rows"
},
colNames:['ID','roleName','detail','action'],
colModel:
[
{name:'id',index:'id',hidden:true},
{name:'name',index:'name', width:100,sortable:false},
{name:'description',index:'description', width:400,sortable:false},
{name:'action',index:'action', width:40,sortable:false}
],
rowNum:10,
altRows:true,
autowidth:true,
mtype: "POST",
rownumbers: true,
rownumWidth: 30,
imgpath:'css/images',
sortorder:'desc',
viewrecords: true,
multiselect:true,
loadui:'disable' ,
gridview:true,
hiddengrid:true,
page:1,
pginput:true,
pager: pagerId,
sortname: 'dateEntered',
altclass:'ui-priority-secondary_1',
});
}
showRoleList($("#entityList0"),"#pEntityList0");
**$entityList0.jqGrid("setGridParam", {
postData:{ACTION:'userRelation',userId:user.id,typeName:'role',flag:true},
});**
**$entityList0.trigger("reloadGrid", [{page:1}]);**
超文本标记语言:
<table id="entityList0"></table>
<div id="pEntityList0"></div>
但在调用触发器时失败,可以发送请求,但没有postData
没有参数可以发送到服务器
但如果我点击刷新按钮,它可以工作
我怎样才能解决这个问题呢
谢谢你回答
2条答案
按热度按时间rn0zuynd1#
我无法重现您的问题。唯一明显的语法错误是
flag:true},})
必须替换为flag:true}})
(删除逗号)。同样,您应该将altclass:'ui-priority-secondary_1',}
替换为altclass:'ui-priority-secondary_1'}
。所有代码都在
$(document).ready(function() {/*here*/});
中吗?在代码中,变量
user
和$entityList0
未初始化。您确定在上述代码中使用set$entityList0=$("#entityList0")
并至少将user
初始化为{}
吗?例如,您还应删除不建议使用的
imgpath
参数,并将sortname: 'dateEntered'
替换为sortname: 'name'
。如果你张贴任何测试数据,你使用我可以给予你的网址,你张贴的代码,在我的工作没有任何问题。
更新日期:好了!现在有了可以测试的代码,我知道你的问题在哪里了。问题是你试图在第一个ajax请求结束之前启动第二个 AJAX 请求。
您的网格有
datatype: 'json'
。在showRoleList($entityList0,'#pEntityList0');
行中,您启动了第一 AJAX 请求,然后立即启动与$entityList0.trigger("reloadGrid")
相关的第二个请求。第一个请求将内部变量$("#entityList0")[0].grid.hDiv.loading
设置为true,您启动的所有其他请求将被忽略,直到超时或从服务器返回响应或错误。可能在设置
postData
参数之前,您并不想发送第一个请求,因此您应该在jqGrid初始化时使用**datatype: 'local'
**(在showRoleList
函数中),然后您应该在postData
之外再设置datatype: 'json'
:另外,你需要在重新加载网格之前中止先前的 AJAX 调用。如果真的需要,我可以解释你如何实现这一点。
nnsrf1az2#
好吧我只是做一个测试. html
当第一次打开url test.html时
然后我点击刷新按钮
你可以测试一下
你可以看到结果是不同的
这是一个简单的页面,你可以很容易地测试!如果你能发现错误,请告诉我谢谢