Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Прием данных с сервера в EXT JS (https://javascript.ru/forum/extjs/7350-priem-dannykh-s-servera-v-ext-js.html)

Rush 27.01.2010 18:43

Прием данных с сервера в 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);


Вопрос?
Как вставить в поля адреса и ФИО данные которые присылает сервер
Если кто-то поможет буду благодарен!!!!!

Yazla 04.02.2010 12:07

У кажодого компонента в конфиге можно задать поле 'ref', при помощи которого можно потом добратся до этого компонента. Почитай в документации, там довольно доступно описано.

moroz11 12.02.2010 15:27

Извините,у меня та же проблема.Может ві уже в курсе,как данные из сервера отобразить в ячейках,поделитесь и со мной.Спасибо.

avaVusal 19.03.2011 14:01

И у меня такая же проблема )

Opts 21.03.2011 16:37

для
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);

Костэн 05.04.2011 17:16

Цитата:

Сообщение от Rush (Сообщение 42380)
Вопрос?
Как вставить в поля адреса и ФИО данные которые присылает сервер
Если кто-то поможет буду благодарен!!!!!

На мой взгляд будет проще раздать айдишники всем формам, над которыми потребуются манипуляции.

Ext.Ajax.request({
//...
success: function(response){
result = Ext.decode(response.responseText);
Ext.getCmp('айди_формы_адреса').setValue(result.adress);
Ext.getCmp('айди_формы_фио').setValue(result.fio);
},
failure: function(response){
//...
}
});

fort-line 26.03.2012 19:06

Кто-нибудь может привести простой пример кода ExtJS, как в поле формы установить значение, взятое с БД сервера ?

vitaliy.khmurach 26.03.2012 19:21

Пример http://ext4all.com/post/form-data-loading-example

vitaliy.khmurach 26.03.2012 19:28

Цитата:

Сообщение от Костэн (Сообщение 99389)
На мой взгляд будет проще раздать айдишники всем формам, над которыми потребуются манипуляции.

Ext.Ajax.request({
//...
success: function(response){
result = Ext.decode(response.responseText);
Ext.getCmp('айди_формы_адреса').setValue(result.adress);
Ext.getCmp('айди_формы_фио').setValue(result.fio);
},
failure: function(response){
//...
}
});

форма сама умеет делать запросы http://docs.sencha.com/ext-js/4-0/#!...el-method-load

nekto_O 26.03.2012 20:01

Цитата:

Сообщение от vitaliy.khmurach
На мой взгляд будет проще раздать айдишники всем формам, над которыми потребуются манипуляции

Обращение к ext-элементам посредствам их идентификаторов (особенно из дочерних) есть самый настоящий быдлокод...
Ext.getCmp('айди_формы_адреса')
это наиужаснейший вариант, учитывая новые возможности ExtJS 4.


Часовой пояс GMT +3, время: 16:02.