Для добавления ajax в ваш компонент необходимо:
Шаг 1
1- Создайте необходимую «ajax-функциональность» в default.php (или другом шаблоне в components/com_xxx/views/yyy/tmpl/)
<script language='javascript'>
function ajxGetCitys(country_id){
var xhr = getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
var city=document.getElementById('city');
try //Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(xhr.responseText);
}
catch(e)
{
try //Firefox, Mozilla, Opera, etc.
{
parser=new DOMParser();
xmlDoc=parser.parseFromString(xhr.responseText,"text/xml");
}
catch(e) {alert(e.message)}
}
var options =xmlDoc.getElementsByTagName('options').item(0);
city.innerHTML='';
for (i=0; i < options.childNodes.length; i++){
var newoption=document.createElement("option");
var myoption=options.childNodes[i];
var newtext=document.createTextNode(myoption.childNodes[0].nodeValue);
newoption.setAttribute("value",myoption.getAttributeNode('id').value)
newoption.appendChild(newtext);
city.appendChild(newoption);
}
}
}
xhr.open("GET","index2.php?option=com_user&task=listcity&country_id="+country_id,true);
xhr.send(null);
}
</script>
Шаг 2
2- В controller.php добавьте функцию, например listcity, показанная в следующем примере:
3- Здесь используется метод getStates($country_id), зарегистрированный в модели, для извлечения списка стран, можете использовать другой подход и адаптировать под свои нужды. Источник
Комментарии:0