3 недели пытаюсь запустить код для выпадающего списка Страна-регион-город, чтобы при выборе страны загружались соответсвующие регионы, а потом города.
index.html
Код:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>
<div id="mainbox">
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.6.custom.min.js"></script>
<script src="js/jquery-ui-i18n.js" type="text/javascript"></script>
<script type="text/javascript">
function getList(type, obj) {
$('#loading_' + type).show();
$.post('city.php', {type: type, id: $('#'+obj).val()}, onAjaxSuccess);
function onAjaxSuccess(data) {
out = document.getElementById(type);
for (var i = out.length - 1; i >= 0; i--) {
out.options[i] = null;
}
eval(data);
$('#loading_' + type).hide();
}
}
</script>
<h1>Пример загрузки городов через AJAX</h1>
<div>страна</div>
<div>
<select name="country_id" id="country" onchange="getList('region', 'country')" style="width:300px;"> </select>
</div>
<div>регион</div>
<div style="display: none" id="loading_region"><img alt="" src="ajax_loader.gif" />Загрузка...</div>
<div>
<select name="region_id" id="region" onchange="getList('city', 'region')" style="width:300px;">
</select>
</div>
<div>город</div>
<div style="display: none" id="loading_city"><img alt="" src="ajax_loader.gif" />Загрузка...</div>
<div>
<select name="city_id" id="city" style="width:300px;">
</select>
</div>
</div>
</body>
</html>
city.php
Код:
<?php
require_once "lib/config.php";
require_once "DbSimple/Generic.php";
$DB = DbSimple_Generic::connect("mysql://myusername:mypassword@localhost/place");
$id = (int)$_POST['id'];
$type = $_POST['type']; // тип списка, который нужно получить (города или регионы)
sleep(1);
if ($type == 'city') {
$cities = $DB->select('SELECT *
FROM city
WHERE region_id = ?d
ORDER BY name', $id);
if (!empty($cities)) {
echo "out.options[out.options.length] = new Option('выберите город...','none');\n";
foreach ($cities as $city) {
echo "out.options[out.options.length] = new Option('".$city['name']."','".$city['city_id']."');\n";
}
}
else {
echo "out.options[out.options.length] = new Option('нет городов','none');\n";
}
}
if ($type == 'region') {
$regions = $DB->select('SELECT *
FROM region
WHERE country_id = ?d
ORDER BY name', $id);
if (!empty($regions)) {
echo "out.options[out.options.length] = new Option('выберите регион...','none');\n";
foreach ($regions as $region) {
echo "out.options[out.options.length] = new Option('".$region['name']."','".$region['region_id']."');\n";
}
}
else {
echo "out.options[out.options.length] = new Option('нет регионов','none');\n";
}
}
?>
БД городов взята отсюда
http://ekimoff.ru/103/ Код, кстати, тоже.
DBSimple, вроде бы, стоит.
В апаче никаких ошибок.
При нажатии на выпадающий список "Страна" ничего не происходит.
Где я накосячил?