Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.07.2011, 00:56
Новичок на форуме
Отправить личное сообщение для trans Посмотреть профиль Найти все сообщения от trans
 
Регистрация: 13.07.2011
Сообщений: 2

Передача данных в Multiple Selection
В демке за сайте сенча
http://dev.sencha.com/deploy/ext-4.0...rm/combos.html
"Multiple Selection" (3-й сверху блок)

Применен код:
// Define the model for a State
Ext.regModel('State', {
    fields: [
        {type: 'string', name: 'abbr'},
        {type: 'string', name: 'name'},
        {type: 'string', name: 'slogan'}
    ]
});

// The data store holding the states
var store = Ext.create('Ext.data.Store', {
    model: 'State',
    data: states
});

// ComboBox with multiple selection enabled
var multiCombo = Ext.create('Ext.form.field.ComboBox', {
    fieldLabel: 'Select multiple states',
    renderTo: 'multiSelectCombo',
    multiSelect: true,
    displayField: 'name',
    width: 500,
    labelWidth: 130,
    store: store,
    queryMode: 'local'
});


Вставил этот комбобокс в свою форму, окрываю фаербаг, выбираю 5 значений в этом комбобоксе, запостил форму - фаербаг пишет что передаются такие вот параметры:

..name=10&name=20&name=30&name=40&name=50...
Сответственно в PHP скрипте, в который постится форма принимая переменную "name" вижу только последнее значение name=50.

Как заставить EXTJS запостить переменную "name" как массив? Или как вообще принять такое на стороне PHP...?

4 часа поиска решения по демкам, инглицкому форуму сенча и експерименты с документацией не дал никакого результата...

Подскажите, кто в теме... куда хоть думать надо... Заранее благодарен
Ответить с цитированием
  #2 (permalink)  
Старый 13.07.2011, 02:59
Кандидат Javascript-наук
Отправить личное сообщение для posta Посмотреть профиль Найти все сообщения от posta
 
Регистрация: 27.08.2010
Сообщений: 115

Думаю стоит обратить внимание на Ext.encode и Ext.decode.

отлови момент передачи и перед ней преобразуй в json (или объект), что бы потом на стороне пхп преобразовать в массив и его уже обработать.

Кстати, ты его че, через форму отправляешь что ли?? Попробуй так:
Ext.Ajax.request({
				
   waitMsg: 'Секундочку...',
   url: 'get.php',
   success: function (response){
			Ext.data.StoreManager.lookup('favStore').loadPage(1);
		},
   failure: function (response){
			Ext.MessageBox.alert('Ошибка','Не могу соединиться с базой'); 
		},
   params: {
			delArray:Ext.encode(ids), // Здесь у меня массив id для удаления
			cmd:'deleteJobs'
		}

});

Последний раз редактировалось posta, 13.07.2011 в 03:04.
Ответить с цитированием
  #3 (permalink)  
Старый 13.07.2011, 09:45
Новичок на форуме
Отправить личное сообщение для trans Посмотреть профиль Найти все сообщения от trans
 
Регистрация: 13.07.2011
Сообщений: 2

posta, благодарю за помошь, покрутил Ext.encode и Ext.decode ...решенияя не нашел.
Ext.Ajax.request мне не подойдет.. там именно форма с 20 полями, которую надо заполнить.

Собрал демку из моей ситуации:

Ext.define('SOME.xmlerror', {
        extend: 'Ext.data.Model',
        fields: ['id', 'msg']
    });


 var SOME_form = Ext.create('Ext.form.Panel', {
        bodyPadding: 2,
        waitMsgTarget: true,
		 
 fieldDefaults: {
            labelAlign: 'left',
            labelWidth: 210,
            msgTarget: 'side'
        },

	 // configure how to read the XML errors
        errorReader: Ext.create('Ext.data.reader.Xml', {
            model: 'SOME.xmlerror',
            record : 'field',
            successProperty: '@success'
        }),items: [{ 
		    xtype: 'fieldset', 
			title: 'Проверка Multiple Selection',
			defaultType: 'textfield', 
			defaults: { width: 540 },
			items: [{
                     xtype: 'combobox',
	         name: 'SOME_region',
	         valueField: 'abbr',
                     triggerAction: 'ALL',
                     fieldLabel: 'Регионы',
	          multiSelect: true,
                     displayField: 'state',
					 store:         Ext.create('Ext.data.Store', {
                                    fields : ['abbr', 'state'],
                                    data   : [	
                                       {abbr : '10',   state: 'Москва'},{abbr : '20',   state: 'Дальневосточный ФО России'},{abbr : '30',   state: 'Приволжский ФО России'},{abbr : '40',   state: 'Северо-Западный ФО России'},{abbr : '50',   state: 'Сибирский ФО России'},{abbr : '60',   state: 'Уральский ФО России'},{abbr : '70',   state: 'Центральный ФО России'},{abbr : '80',   state: 'Южный ФО России'},{abbr : '90',   state: 'Северокавказский ФО России'},{abbr : '100',   state: 'БЕЛАРУСЬ'},{abbr : '110',   state: 'Другие регионы'},
                                    ]
                                }),
                     queryMode: 'local'
		
                },{   
                    fieldLabel: 'Какойто инпут',
                    name: 'SOME_input',
					inputType: 'text',
					maxLength: '100'	
                } ]}],
				
			buttons: [{
            text: 'Запостить',
            disabled: true,
            formBind: true,
            handler: function(){
                this.up('form').getForm().submit({
                    url: 'check_errors.php',
                    submitEmptyText: false,
                    waitMsg: 'Проверка данных...',
					success: function(){
					Ext.Msg.alert('Сообщение', 'Всё успешно'); 
    }
						
                });
            }	
        }]	
	});


Создается панель, которую я печатаю в нужное место на странице. Форма постит 2 переменных SOME_input и SOME_region в check_errors.php, риадер слушает ответ в XML формате по модели SOME.xmlerror, если ошибок нет - печатает Ext.Msg.alert.

Заполняю форму и нажимаю запостить - в фаербаге содержимое поста такое:
SOME_region=10&SOME_region=20&SOME_region=50&SOME_ region=70&SOME_input=test

Думаю там надо чтото вписать в конфигуратор комбобокса, для того чтоб он передал данные нормально, а не перечислением выбранного.... но вот какой??
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
кросдоменная передача данных trong AJAX и COMET 1 12.02.2011 00:19
Передача данных в IFRAME (по аналогии TinyMCE) PashaTurok Events/DOM/Window 12 01.01.2011 21:55
Передача Данных MadGest AJAX и COMET 2 13.09.2010 12:27
Передача и сохранение данных в фаил RX200 Общие вопросы Javascript 7 28.02.2009 14:00
передача данных между формами Yurii Общие вопросы Javascript 2 30.04.2008 20:52