#javascript #jquery #ajax
#javascript #jquery #ajax
Вопрос:
Итак, я пытаюсь заполнить 2 выпадающих списка HTML, используя PHP, MySQL и jQuery. Параметры второго элемента (area) будут зависеть от выбора в первом выпадающем списке (city). Я скопировал код из другого моего рабочего проекта, но я не могу заставить его работать в этом проекте.
Вот мой код JavaScript (ajax.js ):
$(document).ready(function() {
$("#city").change(function() {
var cityid = $(this).val();
if(cityid != "") {
$.ajax({
type: 'POST',
url: 'assets/inc/get.php',
data: {cityid:cityid},
success: function(response) {
var resp = $.trim(response);
$("#area").html(resp);
}
});
} else {
$("#area").html("<option selected disabled>Bir şehir seçiniz</option>");
}
});
});
get.php файл:
<?php
include('dbconfig.php');
if(isset($_POST['cityid'])){
$cityid = mysqli_real_escape_string($conn, $_POST['cityid']);
$query = 'SELECT * FROM `areas` WHERE `city`='.$cityid.' and `active`=1';
$result = mysqli_query($conn,$query) or die(mysql_error());
if(mysqli_num_rows($result) > 0) {
echo '<option selected disabled>Bölge seçiniz</option>';
while($row = mysqli_fetch_object($result)) {
echo '<option value="'.$row->id.'">'.$row->name.'</option>';
}
}
else {
echo '<option selected disabled>asdBir şehir seçiniz</option>';
}
}
?>
и HTML:
<div class="row form-group">
<div class="col-md-6">
<label for="city" class=" form-control-label">Şehir</label>
<select id="city" name="city" class="form-control">
<option selected disabled>Şehir Seçin</option>
<?php
$qry = 'select * from `cities` where `active`=1';
$res = mysqli_query($conn, $qry);
if(mysqli_num_rows($res) > 0) {
while($row = mysqli_fetch_object($res)) {
echo '<option value="'.$row->id.'"';
if($_GET['d3'] == $row->id){echo ' selected';}
echo '>'.$row->name.'</option>';
}
}
?>
</select>
</div>
<div class="col-md-6">
<label for="area" class=" form-control-label">Bölge</label>
<select id="area" name="area" class="form-control">
</select>
</div>
</div>
Я проверил раздел сети в инструментах разработки и ajax.js загружается просто отлично. Хотя, когда я выбираю значение в раскрывающемся списке city, ничего не происходит. Это не вызывает get.php файл вообще. Я искал везде в течение нескольких часов, и, похоже, нигде не могу найти решение, и я не знаю, что я делаю не так.
Заранее большое спасибо за вашу помощь.
Комментарии:
1. Вы пробовали устанавливать Fiddler и видеть, какой ответ (если таковой имеется) вы получаете от вашего Ajax-вызова? telerik.com/fiddler
2. Установите точку останова в
.change()
функции и выполните один шаг по ней, чтобы увидеть, что происходит при выборе из первого меню.3. Также не помешало бы определить
error
обработчик в вашем объекте настроек AJAX. Может помочь что-то настолько простое, насколько это возможноerror: function ( jqXHR, status, error ) { console.log( 'Error!', error ) }
.4. @trfletch к сожалению, в Fiddler вообще ничего не изменилось, когда я выбрал опцию в первом выпадающем списке. Также я только что понял, что консоль выводит «Uncaught TypeError: $ не является функцией» в первой строке ajax.js
5. Вы ссылаетесь на скрипт Jquery на своей странице?
Ответ №1:
Я, наконец, исправил это, добавив следующую строку в первую строку моего ajax.js файл:
var $jq = jQuery.noConflict();
А затем изменил каждый $
на $jq
в том же ajax.js файл. Я надеюсь, что это поможет и другим людям