如何将字符串解码为对象 EXTJS 6

How to decode string to object EXTJS 6

我正在使用 ExtJS 从数据库创建一个 formPanel dynamyc(从服务器到对象 extjs 的字符串结果)

Ext.Ajax.request({
     async : false,
     method : 'POST',
     url : '/Devt/GetFormItemCustomization',
     params : {
        TableName : 'tabeltest',
        col : 1
    },
    success : function (response) {
        var results = Ext.decode(response.responseText);
        console.log(results );
        var form = Ext.create('Ext.form.Panel', {
            width : 300,
            bodyPadding : 10,
            renderTo : 'formCustDiv',
            name : "test",
            items : [results]
        });
    }
})

来自服务器的响应:

{
   fieldLabel:'Employee Id',
   xtype:'textfield',
   allowBlank:false,
},
{
   fieldLabel:'Nick Name',
   xtype:'textfield',
   allowBlank: false,
}

但这只会根据最后的数据创建一个对象。 对象

{
   fieldLabel: "Nick Name", 
   xtype: "textfield", 
   allowBlank: false
 }

我希望服务器解码的响应变成两个对象:

对象 {fieldLabel: "Employee Id", xtype: "textfield", allowBlank: false}

对象 {fieldLabel: "Nick Name", xtype: "textfield", allowBlank: false}

有什么建议吗?

好吧,您的服务器应该始终 return 有效 JSON。逗号分隔的两个对象无效 JSON。 (如果您不相信我,您可以与许多在线 JSON 验证器中的一个进行核对。)您的服务器可能 return 对象数组吗?像这样:

[
    {fieldLabel: "Employee Id", xtype: "textfield", allowBlank: false},
    {fieldLabel: "Nick Name", xtype: "textfield", allowBlank: false}
]

在这种情况下,您可以轻松地继续并通过删除围绕 results 变量的数组从这些创建表单:

var form = Ext.create('Ext.form.Panel', {
        width : 300,
        bodyPadding : 10,
        renderTo : 'formCustDiv',
        name : "test",
        items : results
    });