You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过AJAX获取Tagify白名单数据报clist未定义错误求助

问题原因
  • 变量作用域问题:clist 是在AJAX的success回调函数内部用var声明的局部变量,仅在回调函数内部可访问,外部初始化Tagify时无法读取该变量,因此抛出未定义错误。
  • 异步执行顺序问题:AJAX是异步网络请求,代码发送请求后不会等待请求返回结果,会直接执行后续的Tagify初始化逻辑,就算你把clist改为全局变量,初始化时请求还没返回,clist也没有有效值。
解决方案

直接把Tagify的初始化逻辑移到AJAX的success回调内,拿到接口返回的标签数据后再初始化组件即可。如果接口返回的是字符串格式的数组,记得先转成JSON对象。
修正后代码示例:

$.ajax({
    url: '/ajaxget/tags',
    method: 'GET',
    data: {
        '<?= csrf_token() ?>' : '<?=csrf_hash()?>'
    },
    success: function(response) {
        // 若接口返回的是字符串格式数组,先打开下方注释做转换
        // var clist = typeof response == 'string' ? JSON.parse(response) : response;
        var clist = response;
        var input = document.querySelector('input[name="tags"]');
        tagify = new Tagify(input, {
            enforceWhitelist: true,
            whitelist: clist,
            maxTags: 5,
            dropdown: {
                maxItems: 5,           
                classname: "tags-look", 
                enabled: 0,             
                closeOnSelect: false    
            }
        });
    }
});

如果需要提前初始化Tagify,后续再更新白名单,也可以在success回调内通过tagify.whitelist = clist的方式更新配置。

内容的提问来源于stack exchange,提问作者Secux

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:15:01