Sinatra 0 Опубликовано: 2 ноября 2021 Рассказать Опубликовано: 2 ноября 2021 Сайт: http://prompostavka.kz Я новичок в php, а также ajax-любознательный. Пишу локально модуль, возникла проблема, которую я не могу разобрать. В шаблоне делается ajax запрос к файлу select.php на выборку из базы <script> $('document').ready(function() { $('#country').change(function() { var country_id = this.value; $.ajax({ type: "POST", url: "/engine/ajax/select.php", data: { country_id: country_id }, cache: false, success: function(result){ $('#region').html(result); } }); }); $('#region').change(function() { var region_id = this.value; $.ajax({ type: "POST", url: "/engine/ajax/select.php", data: { region_id: region_id }, cache: false, success: function(result){ $('#city').html(result); } }); }); }); </script> <form action="" method="POST"> <select id="country"> <option value="0">выберите страну</option> <option value="1">страна1</option> <option value="2">страна2</option> <option value="3">страна3</option> </select> <select id="region"></select> <select id="city"></select> </form> Содержимое файла select.php if(!defined('DATALIFEENGINE')) { header( "HTTP/1.1 403 Forbidden" ); header ( 'Location: ../../' ); die( "Hacking attempt!" ); } if(!empty($_POST["country_id"])){ $country_id = $_POST['country_id']; $result = $db->query("SELECT * FROM " . USERPREFIX . "_geo_regions WHERE country_id='$country_id'"); if($result->num_rows > 0){ echo '<option value="">выберите регион</option>'; while ($row = $db->get_row( $result )) { echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>'; } }else{ echo '<option value="">регионы отсутствуют</option>'; } } else if (!empty($_POST["region_id"])){ $region_id = $_POST['region_id']; $result = $db->query("SELECT * FROM " . USERPREFIX . "_geo_cities WHERE region_id='$region_id'"); if($result->num_rows > 0){ echo '<option value="">выберите город</option>'; while ($row = $db->get_row( $result )) { echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>'; } }else{ echo '<option value="">города отсутствуют</option>'; } } В итоге ajax запрос дублирует код всей html страницы и вставляет в <select> Насколько я понимаю это происходит из-за кода в начале файла if(!defined('DATALIFEENGINE')) { header( "HTTP/1.1 403 Forbidden" ); header ( 'Location: ../../' ); die( "Hacking attempt!" ); } Если его убрать, то ничего не происходит. Подскажите как реализовать данное решение? Цитата Ссылка на сообщение Поделиться на других сайтах
MSK 289 Опубликовано: 2 ноября 2021 Рассказать Опубликовано: 2 ноября 2021 (изменено) 24 минуты назад, Sinatra сказал: Содержимое файла select.php а с какого перепугу он тогда вызывается напрямую, а не через контроллер 24 минуты назад, Sinatra сказал: url: "/engine/ajax/select.php", если минуете контроллер - где подключение к базе и т.п.?..... Изменено 2 ноября 2021 пользователем MSK Цитата Ссылка на сообщение Поделиться на других сайтах
Sinatra 0 Опубликовано: 2 ноября 2021 Рассказать Опубликовано: 2 ноября 2021 Автор Поэтому и спрашиваю, что нужно сделать, поскольку не понимаю) Цитата Ссылка на сообщение Поделиться на других сайтах
alex32 942 Опубликовано: 2 ноября 2021 Рассказать Опубликовано: 2 ноября 2021 url: "/engine/ajax/controller.php?mod=select", $db->query("SELECT * FROM " . USERPREFIX . "_geo_regions WHERE country_id={$country_id}"); Тип поля country_id в БД какой? если int то $country_id = intval($_POST['country_id']); 33 минуты назад, Sinatra сказал: Насколько я понимаю это происходит из-за кода в начале файла нет 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Sinatra 0 Опубликовано: 2 ноября 2021 Рассказать Опубликовано: 2 ноября 2021 Автор Спасибо alex32, простой и элегантный ответ, проблема решилась Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.