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.

Eugent 29.03.2012 09:14

Загрузка формы с сервера
 
В 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>

nekto_O 29.03.2012 10:07

Цитата:

Сообщение от Eugent
В ExtJS4 есть удобные механизмы, позволяющие написать проекты с минимумом идентификаторов

я бы сказал совсем без идентификаторов.
Цитата:

Сообщение от Eugent
method: 'GET',

он и так GET по дефолту если никаких параметров не передавать.
Цитата:

Сообщение от Eugent
var form = th_pan.down('form[name=myloadform]');

грохните эту строку и посмотрите будет работать или нет (!).

Ну и try...catch здесь вообще ни к чему...

Eugent 30.03.2012 13:06

Цитата:

Сообщение от nekto_O (Сообщение 165495)
я бы сказал совсем без идентификаторов.

он и так GET по дефолту если никаких параметров не передавать.

грохните эту строку и посмотрите будет работать или нет (!).

Ну и try...catch здесь вообще ни к чему...

насчет идентификаторов - есть задачи, где бывает сложно без них совсем обойтись

про GET - привычка указывать явно

насчет form - на случай если ajax будет в другой функции

про try-catch - писал на php контроллеры, по инерции написал

nekto_O 30.03.2012 13:42

Цитата:

Сообщение от Eugent
насчет идентификаторов - есть задачи, где бывает сложно без них совсем обойтись

если так, то пример в студию!
Цитата:

Сообщение от Eugent
про GET - привычка указывать явно

никто вам не запрещает, лишняя строка кода вобщем-то.
Цитата:

Сообщение от Eugent
насчет form - на случай если ajax будет в другой функции

(Шепотом): Для того что вы пытались сделать в примере listeners вообще не нужны, впрочем как и Ext.Ajax.request().


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