ФорумПрограммированиеБольше языковJava → загрузка несколькиз селектов из базы после выбора в основном селекте без перезагрузки

загрузка несколькиз селектов из базы после выбора в основном селекте без перезагрузки

  • combit

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 24 февраля 2015 г. 4:46

    здравствуйте есть форма с основным селектом name="filter_id"
    <div id=&quot;dataf&quot;>
    <div>
    <select name=&quot;filter_id&quot; onchange=&quot;javascript:selectRegion();&quot;>
    <option value=&quot;0&quot;>- seleziona filtro -</option>
    <?=$query->selectFiltri()?>
    </select>
    </div>
    <p>
    Larghezza: <input type=&quot;text&quot; name=&quot;altezza&quot; value=&quot;&quot; style=&quot;width: 40px;&quot; />&amp;nbsp;x
    Altezza: <input type=&quot;text&quot; name=&quot;larghezza&quot; value=&quot;&quot; style=&quot;width: 40px;&quot; />
    </p>
    <div name=&quot;selectTipologia&quot;></div>
    <div name=&quot;selectProfilo&quot;></div>
    <div name=&quot;selectManiglia&quot;></div>
    <div name=&quot;selectColore&quot;></div>
    <div name=&quot;selectVetro&quot;></div>
    <div name=&quot;selectVetroDecorativo&quot;></div>
    </div>


    и есть js функция которая вызывается этим селектом

    function selectRegion(){
    var filter_id = $(&#39;select[name=&quot;filter_id&quot;]&#39;).val();
    if(!filter_id){
    $(&#39;div[name=&quot;selectTipologia&quot;]&#39;).html(&#39;&#39;);
    $(&#39;div[name=&quot;selectProfilo&quot;]&#39;).html(&#39;&#39;);
    $(&#39;div[name=&quot;selectManiglia&quot;]&#39;).html(&#39;&#39;);
    $(&#39;div[name=&quot;selectColore&quot;]&#39;).html(&#39;&#39;);
    $(&#39;div[name=&quot;selectVetro&quot;]&#39;).html(&#39;&#39;);
    $(&#39;div[name=&quot;selectVetroDecorativo&quot;]&#39;).html(&#39;&#39;);
    }else{
    $.ajax({
    type: &quot;POST&quot;,
    url: &quot;filter.php&quot;,
    data: { action: &#39;showFilterForInsert&#39;, filter_id: filter_id },
    cache: false,
    success: function(responce){

    var optipologi = &#39;&#39;;
    $(responce.selectTipologia).each(function() {
    optipologi += &#39;<option value=&quot;&#39; + tipologi.attr(&#39;id&#39;) + &#39;&quot;>&#39; + tipologi.attr(&#39;nome_corto&#39;) + &#39;</option>&#39;;
    });

    var opprofili = &#39;&#39;;
    $(responce.selectProfilo).each(function() {
    opprofili += &#39;<option value=&quot;&#39; + profili.attr(&#39;id&#39;) + &#39;&quot;>&#39; + profili.attr(&#39;nome_corto&#39;) + &#39;</option>&#39;;
    });

    $(&#39;div[name=&quot;selectTipologia&quot;]&#39;).html(&#39;<select name=&quot;Tipologia&quot;>&#39;+optipologi+&#39;</select>&#39;);
    $(&#39;div[name=&quot;selectProfilo&quot;]&#39;).html(&#39;<select name=&quot;Profilo&quot;>&#39;+opprofili+&#39;</select>&#39;);
    $(&#39;div[name=&quot;selectManiglia&quot;]&#39;).html(&#39;<select name=&quot;Maniglia&quot;>&#39;+selectManiglia+&#39;</select>&#39;);
    $(&#39;div[name=&quot;selectColore&quot;]&#39;).html(&#39;<select name=&quot;Colore&quot;>&#39;+selectColore+&#39;</select>&#39;);
    $(&#39;div[name=&quot;selectVetro&quot;]&#39;).html(&#39;<select name=&quot;Vetro&quot;>&#39;+selectVetro+&#39;</select>&#39;);
    $(&#39;div[name=&quot;selectVetroDecorativo&quot;]&#39;).html(&#39;<select name=&quot;VetroDecorativo&quot;>&#39;+selectVetroDecorativo+&#39;</select>&#39;);
    }
    });
    };
    };


    а так же php обработчик

    <?php
    $sql = mysql_connect(&quot;localhost&quot;, &quot;kiber161_ad&quot;, &quot;1231988&quot;);

    if (!$sql) {
    echo &quot;MySQL сервер недоступен! &quot;.mysql_error();
    } else {
    $select = mysql_select_db(&quot;kiber161_ad&quot;, $sql);

    if (!$select) {
    echo &quot;Нет соединения с БД&quot;.mysql_error();
    }
    }

    if ($_POST[&#39;showFilterForInsert&#39;]){

    //$selectTipologia .= &#39;<select name=&quot;Tipologia&quot;>&#39;;
    $Tipologia = mysql_query(&quot;SELECT id, nome_corto FROM criteri WHERE id_filter=&#39;&quot;.$_POST[&#39;filter_id&#39;].&quot;&#39; AND meta=&#39;Tipologia&#39;&quot;);
    if ($Tipologia) {
    $num = mysql_num_rows($Tipologia);
    $i = 0;
    while ($i < $num) {
    $tipologi[$i] = mysql_fetch_object($Tipologia);
    $i++;
    }
    $selectTipologia = array(&#39;tipologi&#39;=>$tipologi);
    }
    //$selectTipologia = &#39;</select>&#39;;

    //$selectProfilo .= &#39;<select name=&quot;Profilo&quot;>&#39;;
    $Profilo = mysql_query(&quot;SELECT id, nome_corto FROM criteri WHERE id_filter=&#39;&quot;.$_POST[&#39;filter_id&#39;].&quot;&#39; AND meta=&#39;Profilo&#39;&quot;);
    if ($Profilo) {
    $num = mysql_num_rows($Profilo);
    $i = 0;
    while ($i < $num) {
    $profili[$i] = mysql_fetch_object($Profilo);
    $i++;
    }
    $selectProfilo = array(&#39;profili&#39;=>$profili);
    }
    //$selectProfilo = &#39;</select>&#39;;

    $responce = array(&#39;selectTipologia&#39; => $selectTipologia, &#39;selectProfilo&#39; => $selectProfilo);
    print json_encode($responce);
    }
    ?>

    проблема в том что возвращается пустой результат и я не знаю как вывести массив в яве
  • adw0rd

    Сообщения: 22902 Репутация: N Группа: в ухо

    Spritz 24 февраля 2015 г. 5:30, спустя 44 минуты 26 секунд

    @combit,

    1. Явы у вас никакой нет, есть только javascript
    2. Для вывода отладочной информации в js лучше использовать console.log(obj)
    3. Нажмите F12 чтобы вызвать консоль разработчика, там есть вкладка Console, в ней будет выводится отладочная информация, в том числе console.log. Еще есть вкладка Network (или Net), в ней вы сможете увидеть ваши обращения к бекенду на php и посмотреть что он вам возвращает

    Спустя 134 сек.

    Подскажу, надо лог вставить так:

                        ...
                        success: function(responce){
                            console.log(&#39;MY RESPONSE!!!&#39;, response)
                            var optipologi = &#39;&#39;;
                        ...
    
    adw/0
  • combit

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz 24 февраля 2015 г. 6:55, спустя 1 час 24 минуты 31 секунду

    большое спасибо я разобрался можно закрыть тему )))

Пожалуйста, авторизуйтесь, чтобы написать комментарий!