Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在函数中包装Ajax权限检查?_Javascript_Ajax_Extjs - Fatal编程技术网

Javascript 如何在函数中包装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) {

我通过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.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请求,但这些请求并不好,最好 实现一些批处理模式机制
  • 如果组件在默认设置下是隐藏的,它将显示出来,因此您还需要实现此逻辑。 ...

您可以覆盖组件并在其中添加适当的功能。您需要将accessId放入tabConfig属性中。再看一次小提琴的例子,我在那里添加了隐藏标签,效果很好。非常感谢你,你帮了我很多忙!我决定稍微重写代码,以避免大量AJAX请求。我决定在登录应用程序时读取访问id。在这里,我将一个允许访问权限访问id数组放入一个变量:LoginController.js:
App.Global.setAccess(res.access)
在这里我尝试计数,但由于某些原因,该变量为空:App.js
checkPermissions(){var access=App.Global.getAccess();this.setHidden(access.includes(this.accessId)==false)}