Всем привет! Я использую MySQL + PHP + Ajax Ошибка похоже возникает после обработки ajax'ом:
$(document).ready(function () {
$('#country_id').change(function () {
var country_id = $(this).val();
if (country_id == '0') {
$('#region_id').html('<option>- Введите регион -</option>');
$('#region_id').attr('disabled', true);
return(false);
}
$('#region_id').attr('disabled', true);
$('#region_id').html('<option>Загрузка...</option>');
var url = 'get_regions.php';
$.get(
url,
"country_id=" + country_id,
function (result)
{
var options = '';
$(result.regions).each(function()
{
options += '<option value="' + $(this).attr('region_id') + '">' + $(this).attr('name') + '</option>';
});
$('#region_id').html('<option value="0">- Введите регион -</option>'+options);
$('#region_id').attr('disabled', false);
},
"json"
);
});
});
и приложу get_regions.php где идёт обработка региона:
<?php
$connect = mysqli_connect("localhost", "login", "pass", "base");
mysqli_query($connect, 'SET CHARACTER SET "utf8"');
mysqli_query($connect, 'SET NAMES "utf8"');
$country_id = @strval($_GET['country_id']);
//$country_id = 3159;
$regs = mysqli_query($connect, "SELECT `group` FROM `$country_id` ORDER BY `group`");
if ($regs)
{
$num = mysqli_num_rows($regs);
$i = 0;
while ($i < $num)
{
$regions[$i] = mysqli_fetch_assoc($regs);
$i++;
}
$result = array('regions'=>$regions);
}
else
{
$result = array('type'=>'error');
}
print json_encode($result);
?>
MySQL запрос работает хорошо (или нет), но отображается нужное количество регионов. Из-за чего undefined?
Попробуй в success добавить var obj = jQuery.parseJSON(result); и обращайся obj.regions
и print json_encode($result); замени на echo json_encode($result);
Думаю проблема в следующем коде
$(result.regions).each(function() {
options += '<option value="' + $(this).attr('region_id') + '">' + $(this).attr('name') + '</option>';
});
Ты уверен что следует так обращаться к result? result.regions это не объект dom. попробуй просто пройтись циклом for по result.regions, а не методами jquery. например так
for (var i = 0; i < result.regions.length; i++) {
options += '<option value="' + result.regions[i].region_id + '">' + result.regions[i].name + '</option>';
}
Господа выручайтеИмеется скрипт, вот такого вида - знаю, скрипт костыльный, совсем не разбираюсь в javascript , но суть не в этом (работает и то хорошо)...
Есть 3 инпута, надо сохранить их значения в localStorageВсе три поля не может сохранить почему-то:
Мне нужно сделать многоуровневый подгружаемый селект на jqueryТ