@mr_rakhimov

Как передать $_GET параметр через AJAX в обработчик PHP?

Я подготовил код для зависимых списков. Списков всего 3. При выборе значения в первом списке изменяется содержимое во втором (выборка происходит из БД); при выборе значения во втором списке изменяется содержимое в третьем. Так вот, значения из списков я передаю обработчику-php через ajax-запрос, который присваивает значение в супермассив $_GET в соответствующим ключом. С ajax кодом всё в порядке, он всё передаёт в обработчик, как я и запрашиваю. Проблема наступает в самом обработчике. А именно, когда третий список должен изменять своё содержимое относительно второго в обработчике не может корректно осуществиться выборка из БД, ибо обработчик не получил $_GET параметр с первого списка (с первой выборки). Как можно передать выбранный $_GET с первого списка в обработчик второго?

* Использую PDO RedBeanPhP, можете не обращать внимание на выборку (там всё корректно)
Собственно код:

HTML & JS
<?
require "db.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>

	<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

	<script>

	$(document).ready(function(){

		$('#select_worktype').on('change', function(){
			var worktype = $(this).val();

			if(worktype){
				$.get(
					"ajax.php",
					{worktype: worktype},
					function (data){
						$('#select_workspace').html(data);
					}
				);
			}else{
				$('#select_workspace').html('<option disabled selected>Выбор формирования</option>');
			}
		});

		$('#select_workspace').on('change', function(){
			var workspace = $(this).val();

			if(workspace){
				$.get(
					"ajax.php",
					{workspace: workspace},
					function (data2){
						$('#select_position').html(data2);
					}
				);
			}else{
				$('#select_position').html('<option disabled selected>Выбор формирования</option>');
			}
		});

	});

	</script>
</head>
<body>
		<br>
		<br>
		<br>
		<br>
	<form method="POST">
		Выбор типа формирования
		<select name="select_worktype" id="select_worktype">
			<option disabled selected>Выбор типа формирования</option>
			<option value="chairs">Кафедра</option>
			<option value="departments">Отдел</option>
			<option value="managements">Руководство</option>
			<option value="centers">Центр</option>
			<option value="controls">Управление</option>
			<option value="groups">Группа</option>
			<option value="others">Иное</option>
		</select>

		<br>
		<br>
		<br>
		<br>

		Выбор формирования
		<select name="select_workspace" id="select_workspace">
			<option disabled selected>Выбор формирования</option>
		</select>

		<br>
		<br>
		<br>
		<br>

		Выбор должности
		<select name="select_position" id="select_position">
			<option disabled selected>Выбор должности</option>
		</select>
	</form>
</body>
</html>


PHP (файл ajax.php)
<?
require "db.php";

if(isset($_GET['worktype']) && !empty($_GET['worktype'])){
	echo '<option disabled selected>Выбор формирования</option>';

$worktype=$_GET['worktype'];

$last_worktype = R::findLast(''.$worktype.'');
$last_id=$last_worktype->id;

for($i=1; $i!=$last_id+1 ; $i++){
	$search_workspace =R::findOne(''.$worktype.'',  'id = ?', array($i));
	$search_workspace_name=$search_workspace->name;
	$search_workspace_status=$search_workspace->status;

	if($search_workspace_status==1){
		echo '<option value="'.$i.'">'.$search_workspace_name.'</option>';
	}

}

}else{

}





if(isset($_GET['workspace']) && !empty($_GET['workspace'])){
	echo '<option disabled selected>Выбор должности</option>';

	$workspace=$_GET['workspace'];

	$view_position=R::findOne(''.$worktype.'',  'id = ?', array($workspace));
	$view_position_positions=$view_position->positions;
	$view_position_status=$view_position->status;

	$this_positions=unserialize($view_position_positions);

	foreach($this_positions as $key=>$value){
		if(!empty($value)){
			echo '<option value="'.$key.'">'.$value.'</option>';
		}
	}

}else{

}
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
$('#select_workspace').on('change', function(){
      var workspace = $(this).val();
      // ***********************************************
      var worktype = $('#select_worktype').val();
      // ***********************************************

      if(workspace){
        $.get(
          "ajax.php",
          {workspace: workspace, worktype:worktype},
          function (data2){
            $('#select_position').html(data2);
          }
        );
      }else{
        $('#select_position').html('<option disabled selected>Выбор формирования</option>');
      }
    });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы