Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   зависимые списки select (https://javascript.ru/forum/dom-window/47083-zavisimye-spiski-select.html)

zazula 08.05.2014 09:29

пустой алерт выводит

jsnb 08.05.2014 09:30

Ну значит ваш php скрипт ничего не возвращает. Где у вас там вывод данных то? В том коде, который вы приводили в первом посте я не вижу где данные там выводятся.

zazula 08.05.2014 09:34

у меня что-то с массивом, данные в массив из бд заводит, а из массива не выводит

zazula 08.05.2014 09:35

$tip = $mysqli->query("SELECT *
FROM `tip`
WHERE `id_kat` = '".$_POST['kat_id']."'");
$arr = array();
while($row = mysqli_fetch_assoc($tip)){
$arr[] = array($row['tid'] => $row['tname']);
}
return $arr;


if (!isset($_POST['query']) || !$_POST['query']) {
exit("Нет данных определяющих тип запроса");
}
else {

$query = trim($_POST['query']);
// Определяем тип запроса
switch($query) {
case 'getTip':
// Формируем массив с ответом

$result = NULL;
$i = 0;
foreach ($arr as $tip_id => $tip) {
$result[$i]['tip_id'] = $tip_id;
$result[$i]['tip'] = $tip;
$i++;
}

break;

jsnb 08.05.2014 09:38

Это я уже видел. Где сам вывод данных то? echo там или еще что-нить в этом духе?

zazula 08.05.2014 09:41

<form action="" method="post" id="dynamic_selects">		
		<div class="row">
			<label for="kat">Категория</label>			
			<select id="kat">				
				<option value="0">Выберите из списка</option>
				<?php 
					 for($i=0;$i<$kolvo_kat;$i++)
	  {
			 $stroka_kat=mysql_fetch_assoc($dannye_kat); 
			  $sel='';
			  if($stroka_kat['kid']==$kat_sel)
			  {
			  $sel=' selected="selected"';
			  }
			  echo '<option value="'.$stroka_kat['kid'].'"'.$sel.'>'.$stroka_kat['kname'].'</option>';
	  }	               
				  
				  		?>
			</select>
		</div>		
		<div class="row">
			<label for="tip">Тип</label>
			<select id="tip" disabled>
				<option value="0">Выберите из списка</option>
			</select>
		</div>
		
	</form>

jsnb 08.05.2014 09:55

Это всё в query.php? Вы понимаете, что скрипт, к которому обращаетесь аяксом должен выводить только данные в JSON формате, а не отдавать целую страницу?

zazula 08.05.2014 10:51

нет, это в отдельном файле в index, а к нему подключены query.php, скрипт и библеотека jQuery
вот как полностью выглядит query.php

$stroka_zaprosa_kat="SELECT * FROM  kat";
        $dannye_kat=mysql_query($stroka_zaprosa_kat, $connect) or die(mysql_error()) ; 
        $kolvo_kat=mysql_num_rows($dannye_kat); 
        $kat_sel="";
        if(isset($_POST['kat']))
        {
            $kat_sel=$_POST['kat'];
        }
 
 
$tip = $mysqli->query("SELECT *
            FROM  `tip`
            WHERE  `id_kat` =  '".$_POST['kat_id']."'");       
        $arr = array();
        while($row = mysqli_fetch_assoc($tip)){
           $arr[] = array($row['tid'] => $row['tname']);
        }
        return $arr;
    
 
if (!isset($_POST['query']) || !$_POST['query']) {
    exit("Нет данных определяющих тип запроса");
}
else {
    
    $query = trim($_POST['query']); 
    // Определяем тип запроса
    switch($query) {
    case 'getTip':  
        // Формируем массив с ответом
        
        $result = NULL;
        $i = 0;
        foreach ($arr as $tip_id => $tip) {
            $result[$i]['tip_id'] = $tip_id;
            $result[$i]['tip'] = $tip;
            $i++;
        }
        
    break;
    
    default:
        // Если данные не определены
        $result = NULL;
    break;
    }
}
 
// Преобразуем данные в формат json, чтобы их смог обработать JavaScript-сценарий, приславший запрос
echo json_encode($result);

jsnb 08.05.2014 11:58

return $arr;

А вот это зачем? Оно же при выполнении скрипта его завершит и выполнение не дойдет до echo.

zazula 08.05.2014 12:19

я массив поправила, теперь отдельно он работает, но без return $arr;, но если я вставляю его в код и убираю return, то выводится "Нет данных определяющих тип запроса"
$tip = $mysqli->query("SELECT *
            FROM  `tip`
            WHERE  `id_kat` =  '".$_POST['kat_id']."'");       
        $arr = array();
        while($row = mysqli_fetch_assoc($tip))
		{
          $arr[$row['tid']] = $row['tname'];
        }
        return $arr;

В чем может быть дело?


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