Я пытаюсь сделать динамический выбор с использованием ajax, php и запросов к BBDD. По этой причине у меня есть три части: html, в котором я заполнил свои варианты выбора с советами, которые я делаю с BBDD, эта консультация реализована с помощью AJAX, а скрипты для консультации с BBDD делают это на php. Мой html следующий:
<div class = "student-data-block">
<div class = "row">
<div class = "col-md-6">
<label>Nombre</label>
<input type = "text" name = "name" value = "" placeholder = ""/>
<br/>
<label>Apellido</label>
<input type = "text" name = "last_name" value = "" placeholder = ""/>
<br/>
<label>Universidad</label>
<select name = "universitySelect" id = "universitySelect" value = "" placeholder = "">
<option value = "">Escoger universidad</option>
<?php foreach ($universities as $name) { ?>
<option value = "<?php echo $name['UniversityID']?>"><?php echo $name['UniversityName']?></option>
<?php } ?>
</select>
</div>
<div class = "col-md-6">
<label>Campus</label>
<select name = "campusSelect" id = "campusSelect" value = "" placeholder = "">
<option value = "">Escoger campus</option>
</select>
<br/>
<label>Carrera</label>
<select name = "careerSelect" id = "careerSelect" value = "" placeholder = "">
<option value = "">Escoger carrera</option>
</select>
<br/>
<label>Nivel académico</label>
<select name = "study_type" value = ""
placeholder = "">
<option value = "grado">Escoger nivel académico</option>
<option value = "grado">Grado</option>
<option value = "master">Máster</option>
<option value = "postgrado">Postgrado</option>
<option value = "doctorado">Doctorado</option>
</select>
<br/>
</div>
</div>
Сначала мы консультируемся с BBDD и заполняем первый выбор, #universitySelect, после того, как заполняем следующие выборы, мне нужен вариант, выбранный для пользователя, чтобы заполнить другие выбранные функции для выбранной опции. Для создания следующего мы используем Ajax, именно этот код:
$(document).ready(function() {
$('#universitySelect').change(function() {
var universityID = $("#universitySelect").val();
if (universityID) {
$.ajax({
type: 'POST',
url: 'action/AjaxSelect.php',
data: 'universityID=' + universityID,
success: function (html) {
$('#campusSelect').html(html);
$('#careerSelect').html('<option value = "">Selecciona tu carrera</option>');
}
});
} else {
$('#campusSelect').html('<option value = "">Selecciona tu campus primero</option>');
$('#careerSelect').html('<option value = "">Selecciona tu carrera primero</option>');
}
});
$('#campusSelect').change(function(){
var campusID = $("#campusSelect").val();
if (campusID) {
$.ajax({
type: 'POST',
url: 'action/AjaxSelect.php',
data: 'campusID=' + campusID,
success: function (html) {
$('#careerSelect').html(html);
}
});
}
else {
$('#careerSelect').html('<option value = "">Selecciona tu carrera primero</option>');
}
});
} );
Наконец, когда я получаю данные AJAX, я обращаюсь к BBDD, чтобы заполнить остальные. Мой AjaxSelect.php выглядит следующим образом:
if (!empty($_REQUEST["universityID"])){ //&& isset($_REQUEST["universityID"])
$q_campus = 'select c.CampusID, c.Name as CareerName from unithinks.campus c
where UniversityID = "$_REQUEST["universityID"]" order by c.CampusID asc ';
//Count total number of rows
$rowCampus = query($db_connection, $q_campus);
//State option list
if ($rowCampus > 0){
echo '<option value = "">Selecciona campus</option>';
foreach ($rowCampus as $campus){
echo '<option value = "'.$campus['CampusID'].'">'.$campus['CareerName'].'</option>';
}
}else{
echo '<option value = "">Selecciona primero universidad</option>';
}
}
else if (!empty($_REQUEST["campusID"])){
$q_careers = 'select ca.CareerID, ca.Name as CareerName from unithinks.careers ca
where CampusID = "$_REQUEST["campusID"]" order by ca.CareerID asc ';
$rowCareers = query($db_connection, $q_campus);
//State option list
if ($rowCareers > 0){
echo '<option value = "">Selecciona Carrera</option>';
foreach ($rowCareers as $careers){
echo '<option value = "'.$careers['CampusID'].'">'.$careers['CareerName'].'</option>';
}
}else{
echo '<option value = "">Selecciona primero universidad o campus</option>';
}
Не понимаю, в чем ошибка. Я знаю, что код работает хорошо, пока не дойдет до петиции ajax, в Ajax я не знаю, отправляет ли он POST. (Также объясните, что консультации возвращают данные хорошо.)
Извините, я новичок в использовании php. Спасибо заранее.
Закомментируйте весь свой скрипт в AjaxSelect.php и просто поместите <? Php var_dump ($ _ POST); ?>. В вашем успехе ajax: function (html) {console.info (html);}; и посмотри, что ты получишь
Я отредактировал свой комментарий и более точно объяснил свою проблему.
Привет, Майкл. Я вижу в console.info ошибку 404. AJAX не нашел файл action / AjaxSelect.php. Это проблема, большое спасибо.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ошибка находится в URL-адресе AJAX и в консультации BDD.
Код следующий:
$('#universitySelect').change(function() {
var universityID = $("#universitySelect").val();
//alert(universityID);
if (universityID) {
$.ajax({
type: 'POST',
url: 'actions/AjaxSelect.php',
data: 'universityID=' + universityID,
success: function (html)
{
console.info(html);
$('#campusSelect').html(html);
$('#careerSelect').html('<option value = "">Selecciona tu carrera</option>');
}
});
} else {
$('#campusSelect').html('<option value = "">Selecciona tu campus primero</option>');
$('#careerSelect').html('<option value = "">Selecciona tu carrera primero</option>');
}
});
и ajaxSelect.php:
$db_connection = Connect_MySqli($cnn);
if (!empty($_REQUEST["universityID"])){ //&& isset($_REQUEST["universityID"])
$q_campus = 'select c.CampusID, c.Name as CareerName from unithinks.campus c
where UniversityID='.$_REQUEST["universityID"].' order by c.CampusID asc ';
//Count total number of rows
$rowCampus = query($db_connection, $q_campus);
//State option list
if ($rowCampus > 0){
echo '<option value = "">Selecciona campus</option>';
foreach ($rowCampus as $campus){
echo '<option value = "'.$campus['CampusID'].'">'.$campus['CareerName'].'</option>';
}
}else{
echo '<option value = "">Selecciona primero universidad</option>';
}
}
Пожалуйста, поясните, в чем заключается ваша проблема. Что вы ожидаете? А что вы получите взамен? Пожалуйста, просмотрите наш Контрольный список вопросов SO, чтобы помочь вам задать хороший вопрос и, таким образом, получить хороший ответ.