Показать сообщение отдельно
  #1 (permalink)  
Старый 21.11.2016, 13:13
Профессор
Отправить личное сообщение для espltd Посмотреть профиль Найти все сообщения от espltd
 
Регистрация: 10.10.2012
Сообщений: 201

Параметры двух select для ajax запроса. Нужен совет
Доброго дня! Подскажите пожалуйста как правильно реализовать с точки зрения оптимизации, а то понимаю что расплодил сущностей. Суть в следующем:

1. Есть 4 выпадающих списка. Они зависимые друг от друга. Не могу понять, как правильно организовать отправку выбранных параметров на сервер, т.е. глупо писать на каждый выпадающий список событие change и вызывать аякс запрос с отправкой параметров, а то их 4 штуки получится.

2. Мне хотелось бы сделать таким образом, когда я выбираю последние зависимые выпадающие списки, чтобы считывались все выбранные мною элементы и отсылались единственным ajax запросом. Кнопочку Submit я не использую т.к. задумка именно такая, чтобы при выборе любого из селектов подгружалась инфа которая нашлась в базе по выбранным id-шникам. Ну думаю смысл понятен. Как именно сделать это правильно!? Заранее спасибо, вот код... 2 аякс запроса мне нужны для подгрузки зависимых селектов, наверное это тоже не верно и можно одним справиться... Буду благодарен за любые советы

/** серия - первая */ 
       $( '#series_one' ).on('change', function(){
            $.ajax({
    			data     : 'seriesID='+this.value,
    			url      : "<?=$this->createUrl('/site/SelectComplectation')?>",
    			success  : function(html){                    
                    if(html != '') $('#complectation_one').prop('disabled', false).html(html);
    				else $('#complectation_one').attr('disabled','disabled').html('<option>...</option>');                     
    			}
    		});  
       });
              
       /** серия - вторая */ 
       $( '#series_two' ).on('change', function(){
            $.ajax({
    			data     : 'seriesID='+this.value,
    			url      : "<?=$this->createUrl('/site/SelectComplectation')?>",
    			success  : function(html){                    
                    if(html != '') $('#complectation_two').prop('disabled', false).html(html);
    				else $('#complectation_two').attr('disabled','disabled').html('<option>...</option>');                     
    			}
    		});  
       });
       
       
       /** комплектация серии */ 
       $('#complectation_one').on('change', function(){
            $.ajax({
    			data     : 'complectationID_one='+this.value,
                type     : "POST",
    			url      : "<?=$this->createUrl('/site/SelectOption')?>",
    			success  : function(html){                    
                    if(html != '') $('#tabResult').html(html);              
    			}
    		}); 
       });
       
        /** комплектация серии */ 
       $('#complectation_two').on('change', function(){
            $.ajax({
    			data     : 'complectationID_two='+this.value,
                type     : "POST",
    			url      : "<?=$this->createUrl('/site/SelectOption')?>",
    			success  : function(html){                    
                    if(html != '') $('#tabResult').html(html);              
    			}
    		}); 
       });
Ответить с цитированием