Прием данных с сервера в 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, время: 18:59. |