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

Sencha Architect 4.2 Ext 7.3.x classic 循环结构转JSON报错解决方案问询

问题触发原因

Ext 7.3.x classic版本对Ajax Proxy的默认参数序列化逻辑做了调整,当Store绑定的Model存在关联字段、或者Proxy的extraParams中不小心引入了组件实例、Store实例这类带循环引用的对象时,新版序列化逻辑未做循环引用检测,会直接尝试将完整对象转为JSON字符串,就会抛出Converting circular structure to JSON错误。6.2.x版本的序列化逻辑会自动跳过非基础类型的参数项,因此不会触发报错。

解决/规避方案
  • 方案1:重写全局Ajax Proxy的参数序列化方法,过滤非基础类型参数,避免循环引用
    Ext.override(Ext.data.proxy.Ajax, {
        encodeParams: function(params) {
            const filteredParams = {};
            Object.keys(params).forEach(key => {
                const val = params[key];
                // 仅保留基础类型、null、日期类型参数
                if (typeof val !== 'object' || val === null || val instanceof Date) {
                    filteredParams[key] = val;
                }
            });
            return Ext.Object.toQueryString(filteredParams);
        }
    });
    
  • 方案2:不需要修改全局逻辑的场景下,单独给当前用到的Store的Proxy添加配置paramsAsJson: false,强制使用表单格式传参而非JSON序列化传参,即可绕过该问题
  • 方案3:升级Ext版本到7.4.x及以上正式版,该序列化逻辑缺陷已在后续版本被官方修复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:18:02