Javascript 如何在函数中包装Ajax权限检查?
我通过Ajax进行了权限检查:Javascript 如何在函数中包装Ajax权限检查?,javascript,ajax,extjs,Javascript,Ajax,Extjs,我通过Ajax进行了权限检查: Ext.Ajax.request({ url: [url_php], params: { ssid: Ext.util.Cookies.get("token"), access_id: 1000000057 }, success: function(response, opts){ res = Ext.decode(response.responseText); if (res.success == true) {
Ext.Ajax.request({
url: [url_php],
params: {
ssid: Ext.util.Cookies.get("token"),
access_id: 1000000057
},
success: function(response, opts){
res = Ext.decode(response.responseText);
if (res.success == true) {
Ext.getCmp('CardUser').setHidden(false);
}
},
});
结果会有很多。是否可以将其输出到单独的函数中,例如,为了代码的紧凑性?因此,您可以覆盖Ext.组件以在其中添加权限机制。它将是这样的:
Ext.define('overrides.Component', {
override: 'Ext.Component',
accessId: false,
initComponent: function () {
this.callParent();
if (this.accessId) {
this.checkPermissions()
}
},
checkPermissions() {
Ext.Ajax.request({
url: 'checkPermissions.json',
params: {
ssid: Ext.util.Cookies.get("token"),
access_id: this.accessId
},
success: function (response, opts) {
res = Ext.decode(response.responseText);
this.setHidden(res.success === true);
},
scope: this
});
}
});
“Ext.Component”是所有Ext元素(文本字段、表单、网格..工具栏)的基类。因此,所有子组件都将获得此功能
在下面的fiddle示例中,gui子元素发出ajax请求并在成功时隐藏它们自己:false(这是随机的)。只需重新运行应用程序即可查看结果
当然,您必须根据需要编辑此解决方案
此解决方案的缺点:
- 您将发出很多ajax请求,但这些请求并不好,最好 实现一些批处理模式机制
- 如果组件在默认设置下是隐藏的,它将显示出来,因此您还需要实现此逻辑。 ...
App.Global.setAccess(res.access)
在这里我尝试计数,但由于某些原因,该变量为空:App.jscheckPermissions(){var access=App.Global.getAccess();this.setHidden(access.includes(this.accessId)==false)}