<?php
if(isset($_GET['country'])) {
$city = [
1 => [1 => "Москва", "Питер"],
[3 => "Киев", "Одесса"]
];
if($c = (int)$_GET['country'] AND $c = $city[$c]) {
header('Content-type: text/html; charset=utf-8');
exit(json_encode($c));
} else exit(json_encode('Not!'));
}
?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Формат JSON</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
$("[name='country']").on("change", function() {
if(this.value) $.get(location, {country: this.value}, function (data) {
console.log(typeof data)
if(typeof data === 'object') {
$("select[name='city']").find('option').slice(1).remove();
for (var id in data) $("select[name='city']").append($("<option value='" + id + "'>" + data[id] + "</option>"));
} else alert(data)
}, 'json');
});
});
</script>
</head>
<body>
<label>Страна:</label>
<select name="country">
<option value="">Выберите страну</option>
<option value="1">Россия</option>
<option value="2">Украина</option>
</select>
<br />
<label>Город:</label>
<select name="city">
<option value="">Выберите город</option>
</select>
</body>
</html>
Сохранить под любым именем, запустить.
PS. Или:
header('Content-type: application/json; charset=utf-8');
и
}
, 'json'); - тип ожидаемых данных не указывать, JQ его по заголовку сервера определит.