Пусть сервер вернул показанное в примере на ввод "во", стоим список:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>
$(function() {
//это вернул сервер в success
var data = [
{"id" : 12, "city" : "Волгоград"},
{"id" : 15, "city" : "Воронеж"}
];
//success обработчик
var ul = $('ul.search_result');
$.each(data, function() {
ul.append('<li data-id="' + this.id + '">' + this.city + '</li>')
})
});
</script>
</head>
<body>
<ul class="search_result"></ul>
</body>
</html>
Список строится?
Почему без ID? Или вы намерены вместо идентификаторов использовать имена? В скрытое поле нужно передвать идентификатор. А можно и в LI спрятать радио кнопки с label, и значение у которых есть идентификаторы, значение выбранной кнопка будет отправлено серверу.