Прием данных с сервера в EXT JS
У меня такой вопрос! Есть форма
var tab2 = new Ext.FormPanel({ labelAlign: 'top', title: '', bodyStyle:'padding:5px', height: getClientHeight() - 270, width: getClientWidth() - 25, x: 5, y: 30, frame: true, items: [{ xtype:'tabpanel', plain:true, activeTab: 0, height:250, defaults:{bodyStyle:'padding:10px'}, items:[{ title:'Персональные данные клиента', layout:'form', defaults: {width: 230}, defaultType: 'textfield', items: [{ fieldLabel: 'ФИО клиента', name: 'fio', value: '' },{ fieldLabel: 'Адрес клиента', name: 'adress', value: '' },{ fieldLabel: 'Счет в организации', name: 'schet', value: '' }, { xtype: 'button', text: 'Загрузить', width: 100, handler: function() { tab2.getForm().submit({ method: 'GET', waitMsg: 'Подождите идет отправка данных...', waitTitle: 'Соединение с сервером...', url:'test.php?schet'+ tab2.getForm().findField('schet').getValue(), success: function() { // Как вставить в поля адреса и ФИО данные которые присылает сервер }, failure:function() { Ext.Msg.alert('Аутентификация пользователя','Вы ввели неправельный логин или пароль!.'); loginForm.getForm().reset(); } }); } }] },{ title:'Phone Numbers', layout:'form', defaults: {width: 230}, defaultType: 'textfield', items: [{ fieldLabel: 'Home', name: 'home', value: '(888) 555-1212' },{ fieldLabel: 'Business', name: 'business' },{ fieldLabel: 'Mobile', name: 'mobile' },{ fieldLabel: 'Fax', name: 'fax' }] },{ cls:'x-plain', title:'Biography', layout:'fit', items: { xtype:'htmleditor', id:'bio2', fieldLabel:'Biography' } }] }], buttons: [{ text: 'Сохранить' },{ text: 'Отмена', }] }); и серверная часть $schet = $_GET['schet']; $link = mysql_connect("localhost","root",""); mysql_select_db("extjs"); $rs = mysql_query("SELECT nstreet as adress, fio FROM misto where nnj = '$schet';"); $arr = array(); while($obj = mysql_fetch_object($rs)) { $arr[] = $obj; } if(mysql_num_rows($rs)>0) { echo '{success: true, data:'.json_encode($arr).'}'; } else { echo "{success: false}"; } mysql_close($link); Вопрос? Как вставить в поля адреса и ФИО данные которые присылает сервер Если кто-то поможет буду благодарен!!!!! |
У кажодого компонента в конфиге можно задать поле 'ref', при помощи которого можно потом добратся до этого компонента. Почитай в документации, там довольно доступно описано.
|
Извините,у меня та же проблема.Может ві уже в курсе,как данные из сервера отобразить в ячейках,поделитесь и со мной.Спасибо.
|
И у меня такая же проблема )
|
для
fieldLabel: 'ФИО клиента', добавь id:'fio' потом в success добавь ещё два параметра success(form, action) т.е. эта функция принимает два параметра от сервера. Потом делаешь так Ext.getCmp('fio').setValue(action.result.data.fio) или Ext.getCmp('fio').setValue(action.data.fio) надо проверить точно не помню. А можно и без ID, на основе name. tab2.find('name', 'fio')[0].setValue(action.result.data.fio); |
Цитата:
Ext.Ajax.request({ //... success: function(response){ result = Ext.decode(response.responseText); Ext.getCmp('айди_формы_адреса').setValue(result.adress); Ext.getCmp('айди_формы_фио').setValue(result.fio); }, failure: function(response){ //... } }); |
Кто-нибудь может привести простой пример кода ExtJS, как в поле формы установить значение, взятое с БД сервера ?
|
|
Цитата:
|
Цитата:
Ext.getCmp('айди_формы_адреса')это наиужаснейший вариант, учитывая новые возможности ExtJS 4. |
Загрузка формы с сервера
В ExtJS4 есть удобные механизмы, позволяющие написать проекты с минимумом идентификаторов, используйте их.
Простой пример работы с сервером: php-код: <?php $result_arr = array( 'success' => true, 'data' => array( array( "fio" => "Петров Иван Иванович", "email" => "petro@test.ru" ) ) ); echo json_encode($result_arr); ?> html+js код: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>ExtJS4</title> <link rel="stylesheet" type="text/css" href="/libs/ext4/resources/css/ext-all-gray.css" /> <script type="text/javascript" src="/libs/ext4/ext-all-debug.js"></script> <script type="text/javascript" src="/libs/ext4/locale/ext-lang-ru.js"></script> <script> Ext.onReady(function() { var form = Ext.create('Ext.form.Panel', { name: 'myloadform', defaults: { padding: '15 0 0 15' }, region: 'center', items: [ {xtype: 'textfield', name: 'fio'}, {xtype: 'textfield', name: 'email'} ] }); Ext.create('Ext.container.Viewport', { layout : 'border', defaults: { split: true, collapsible: true, collapseMode: 'mini', hideCollapseTool: true }, items : [ { xtype: 'panel', region: 'center', layout: 'fit', items: [ form ], listeners: { afterrender: function(th_pan){ var form = th_pan.down('form[name=myloadform]'); Ext.Ajax.request({ url : '/testero/data/getusers.php', method: 'GET', success: function(response, options){ try{ var responseObj = Ext.decode(response.responseText); if(responseObj.success === true){ form.getForm().setValues(responseObj.data[0]); } } catch(error){ } } }); } } } ] }); }); </script> </head> <body></body> </html> |
Цитата:
Цитата:
Цитата:
Ну и try...catch здесь вообще ни к чему... |
Цитата:
про GET - привычка указывать явно насчет form - на случай если ajax будет в другой функции про try-catch - писал на php контроллеры, по инерции написал |
Цитата:
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 03:48. |