javascript 我如何调用刷新方法

ds97pgxw  于 2023-01-01  发布在  Java
关注(0)|答案(2)|浏览(162)

问题是这样:我初始化一个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
没有参数可以发送到服务器
但如果我点击刷新按钮,它可以工作
我怎样才能解决这个问题呢
谢谢你回答

rn0zuynd

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'

$entityList0.jqGrid(
    "setGridParam",
    {
        datatype: 'json',
        postData: {
            ACTION:'userRelation',
            userId:'1111',
            typeName:'role',
            flag:true
        }
    }
);

另外,你需要在重新加载网格之前中止先前的 AJAX 调用。如果真的需要,我可以解释你如何实现这一点。

nnsrf1az

nnsrf1az2#

好吧我只是做一个测试. html

<html ... 
    <script  type="text/javascript"> 
    var $entityList0;  
     $(function(){

       $entityList0 = $("#entityList0");          
       showRoleList($entityList0,'#pEntityList0');         
       $entityList0.jqGrid("navGrid",'#pEntityList0',{});         
       $entityList0.jqGrid("setGridParam",
        {     
             postData:{ACTION:'userRelation',userId:'1111',typeName:'role',flag:true}
        }).showCol("action");   
        $entityList0.trigger("reloadGrid"); 
        });  
var showRoleList = function($entityList,pagerId) {
            $entityList.jqGrid({
                url:'servlet/RoleAction',
                datatype: 'json',       height: 'auto',
                jsonReader:         {
                    repeatitems : false,
                    userdata: "rows"
                },
                colNames:['ID','roleName','detail','actiokn'],
                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',
            }); } </script> 
</head> 
<body>
          <table id="entityList0"></table>
           <div id="pEntityList0"></div>        
</body> 
</html>

当第一次打开url test.html时

HeadersPostPutHTMLXML
    application/x-www-form-urlencoded
    _search false
    nd  1300458295847
    page    1
    rows    10
    sidx    dateEntered
    sord    desc

_search=false&nd=1300458295847&rows=10&page=1&sidx=dateEntered&sord=desc

然后我点击刷新按钮

HeadersPostPutHTML
application/x-www-form-urlencoded
ACTION  userRelation
_search false
flag    true
nd  1300458310960
page    1
rows    10
sidx    dateEntered
sord    desc
typeName    role
userId  1111

_search=false&nd=1300458310960&rows=10&page=1&sidx=dateEntered&sord=desc&ACTION=userRelation&userId=1111&typeName=role&flag=true

你可以测试一下
你可以看到结果是不同的
这是一个简单的页面,你可以很容易地测试!如果你能发现错误,请告诉我谢谢

相关问题