两个默认网格防御:
initialise(){
$("#ExpenseTable").jqGrid({
datatype : "local",
mtype : 'GET',
colModel : [ {name:'expnsId',label:'ID', width:150 },
{name:'userName',label:'NAME', width:150 },
{name:'catName',label:'CATEGORY', width:150 },
{name:'date',label:'DATE', width:150 },
{name:'amount',label:'AMOUNT', width:150 },
{name:'status',label:'STATUS', width:150 }],
pager : '#ExpPager',
rowNum : 10,
rowList : [ 10, 20, 30 ],
sortname : 'invid',
sortorder : 'desc',
viewrecords : true,
autowidth : false,
caption : 'Expenses Details',
onSelectRow : function(expnsId) { dispExpensData(expnsId); }
});
$("#tabs").tabs();
getTokens();//Gets the tokens for the logged in user.
refreshExpenseGrid();//Populates data to the grid
dispLeaveGrid();// It ll call the next default grid
}
}
$("#LeaveTable").jqGrid({
datatype : "local",
mtype : 'GET',
colModel : [ {name:'leaveId',label:'ID', width:150 },
{name:'userName',label:'NAME', width:150 },
{name:'fdate',label:'DATE', width:150 },
{name:'tdate',label:'DATE', width:150 }
{name:'status',label:'STATUS', width:150 }],
pager : '#ExpPager',
rowNum : 10,
rowList : [ 10, 20, 30 ],
sortname : 'invid',
sortorder : 'desc',
viewrecords : true,
autowidth : false,
caption : 'Leave Applications',
onSelectRow : function(leaveId) { displeaveData(leaveId); }
});
refreshLeaveGrid();//Populates data to the grid
securedUI();//This ll call the below function, to check whether the remaining tabs can be visible or not
安全的用户界面功能
function securedUI(){
var secToken = "DELETEUSER";
if(!checkRoleToken(secToken)){//If users dont have token to delete user, the buttons ll be disabled
$('#expDelete').attr('disabled', 'disabled');
$('#lveDelete').attr('disabled', 'disabled');
$('#delUser').attr('disabled', 'disabled');
$('#roleDel').attr('disabled', 'disabled');
$('#tokenDel').attr('disabled', 'disabled');
}
var secToken= "VIEWUSER";
if(checkRoleToken(secToken)){
showUserdetails();//3rd Grid Defn:Contains the table definition for user grid.
initialiseRole();//4th Grid Defn: Role grid
showtokens();//5th Grid Defn: token grid
}
检查令牌:
function checkRoleToken(newToken){
for( var i = 0; i<tokens.length; i++ ){
var token = tokens[i];//Tokens is like cache, which contains all the tokens that are assigned for the current user.
if(newToken == token.tokenName){
return true;
}
}
return false;
}
html页面:
<script type="text/javascript">
$(document).ready(function() {
initialise();
});
</script>
LeaveTable
是第二个网格,我还有3个网格。但我不想向所有用户展示它们,而管理员用户应该能够看到它们。令牌是找到用户有权在应用程序中执行任何操作的关键。为用户分配的标记将加载到客户端缓存,如数组tokens
。
每个功能,例如ADD
,DELETE
,UPDATE
&amp; VIEW
在存储在变量中的函数的开头有它们的标记。该标记变量将作为参数发送到CheckToken()
。它会在令牌缓存中检查该令牌。它将返回true
或false
。根据该结果,操作将取消或继续。
在上面的代码中,在LeaveTable网格防御结束时,您可以看到函数调用securedUI();
。在这个功能里面,我正在做两件事。 1.禁用删除按钮,2。禁用3rd
,4th
&amp; 5th
网格,适用于那些没有令牌的人DELETEUSER
&amp; VIEWUSER
。
实际上我现在得到的是3rd
,4th
&amp;对于拥有令牌5th
的用户,不会显示VIEWUSER
个网格。查看函数securedUI()
&amp; checkToken()
,他们应该做什么! securedUI()有VIEWUSER
标记和当前用户,因此checkToken()应返回true,因此它应该进入if块并执行if块内的函数调用。但它不这样做。我无法弄清楚我哪里出错了。
所以,我打开了萤火虫并逐步检查了它。奇怪的是,现在它进入if块并显示管理员用户的网格。现在我觉得它工作了然后我关掉了萤火虫并再次重新加载页面。哎呀,还有3个剩余的网格没有显示。你现在能够对我的问题有所了解!!!
任何建议!!!
答案 0 :(得分:2)
在我看来,您应该将所有JavaScript代码放在jQuery(document).ready
句柄中:jQuery(document).ready(function() {/* place your code here */});
如果您确实使用此句柄,请发布包含完整HTML代码的示例的更多完整代码。您可以减少代码示例以使示例更紧凑。重要的只是问题留在代码中,每个人都可以重现问题。