Oto kilka fragmentów kodu do zmiany zawartości selecta za pomoca AJAX'a.
Ja osobiście korzystam z biblioteki xajax która możesz znaleźć np.
tutajPowklejam tutaj kawałki kodu z aplikacji wykorzystującej Smarty ... ale powinieneś załapać o co chodzi przerobię go schematycznie na Twoje potrzeby:
na początek kod html ( w moim przypadku .tpl ):
{$initAjax}
<select name="id_woj" onChange="xajax_Miasta(this.options[this.selectedIndex].value);"> {section name=idx loop=$woj}
{/section}
teraz kod php
<?php
require_once("xajax.inc.php");
$xajax = new xajax();
function Miasta($filtr)
{
//otwierasz plik o nazwie $filtr.txt
// albo jak tam bedziesz mial go nazwanego
// i odczytujesz do tablicy $lista
{
$m_cont='<select name="miasto">';
$m_cont.='<option value="">wybierz</option>';
foreach($lista as $k=>$v)
{
$m_cont.='<option value="'.$v[0].'">'.$v[0].'</option>';
}
$m_cont.='</select>';
}
$objResponse = new xajaxResponse('ISO-8859-2');
$objResponse->addAssign("miasta","innerHTML", $m_cont);
return $objResponse->getXML();
}
$xajax->setCharEncoding('ISO-8859-2');
$xajax->decodeUTF8InputOn();
$xajax->registerFunction("Miasta");
$xajax->processRequests();
$xajax->printJavascript(AJAXPATH);
$smarty->assign(initAjax, $initAjax);
?>
Tak to by wyglądało w skrócie ... więcej informacji wyciągniesz na pewno z dokumentacji i przykładów, które są na stronie podanej na początku posta.