如何解码字符串到对象EXTJS 6

时间:2016-06-04 09:17:57

标签: javascript json extjs decode extjs6

我是否使用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}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

好吧,你的服务器应该总是返回有效的JSON。逗号分隔的两个对象不是有效的JSON。 (如果您不相信我,可以查看许多在线JSON验证器之一。)您的服务器是否可能返回一个对象数组?像这样:

[
    {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
    });