Sencha Ext.form.Panel(PC, classic)

2024. 4. 8. 23:16카테고리 없음

Ext.define('{app 이름}', {
    extend: 'Ext.form.Panel',
    xtype: '{app xtype}',
    // 창 close 버튼
    closable: true,

    title: '{app title}',
    border: true,
    bodyPadding: 5,
    width: 500,
    // ajax에서 정의하고 있어서 제거
    //url: '{url 정보}',
    // defaultType을 지정하면 아래에서 xtype이 없으면 defaultType 적용
    defaultType: 'textfield',
    layout: 'anchor',
    defaults: {
        labelWidth: 150,        
        anchor: '50%'
    },
    items: [{
        fieldLabel: '{라벨}',
        name: '{변수이름}',
        allowBlank: false
    }, {
    	// hiddenfiled 정의
        xtype: 'hiddenfield',
        name: '{변수이름}',
        value: '-'
    }],
    // Reset and Submit buttons
    buttons: [{
        text: 'Reset',
        handler: function() {
        	// form 내용을 reset
            this.up('form').getForm().reset();
        }
    }, {
        text: 'Submit',
        jsonSubmit: true,
        formBind: true, //only enabled once the form is valid
        disabled: true,
        handler: function() {
            var form = this.up('form').getForm();
            if (form.isValid()) {
                Ext.MessageBox.wait('Please wait...', 'Submitting');
                Ext.Ajax.request({
                    //async: false,
                    url: '{url 정보}',
                    method: 'POST',
                    headers: { 'Content-Type': 'application/json' },
                    params : Ext.JSON.encode(form.getValues()),
                    success: function(conn, response, options, eOpts) {
                        Ext.MessageBox.hide()
                        var result = Ext.util.JSON.decode(conn.responseText);
                        Ext.Msg.alert('Success', result.message);                      
                    },
                    failure: function(conn, response, options, eOpts) {
                        Ext.MessageBox.hide()
                        var result = Ext.util.JSON.decode(conn.responseText);
                        Ext.Msg.alert('Fail', result.message);
                    }
                });
            }
        }
    }],
});

Uncaught Error: You're trying to decode an invalid JSON String: undefined

hiddenfield에 값이 없을 때 발생함