Я новичок с ajax в Grails. Я хочу попытаться выполнить метод контроллера из gsp-кода из ajax.Выполнение функции контроллера в Grails через Ajax
Это часть моего GSP-кода:
<g:select
optionKey="id" name="region.id" id="region" from="${region}" noSelection="[null:' ']"
onchange="categoryChanged(this.value);"
></g:select>
<div>
<b>Sub-Category: </b>
<span id="subContainer"></span>
</div>
<script>
function categoryChanged(regionId) {
$.ajax({type:'POST',data:'regionId='+regionId, url:'restorator/region/categoryChanged',success:function(data,textStatus){jQuery('#subContainer').html(data);},error:function(XMLHttpRequest,textStatus,errorThrown){}});
}
</script>
В параметре URL-адрес вызова $ АЯКС: реставратор представляет собой пакет, регион представляет собой контроллер в нем и categoryChanged это действие.
Это мой контроллер:
class RegionController {
def ajaxGetCities = {
println "hello"
def region = Region.get(params.id)
render region?.cities as JSON
}
def categoryChanged(long regionId) {
println "test"
Region region = Region.get(regionId)
def subCategories = []
if (region != null) {
subCategories = City.findAllByRegion(region, [order:'cityName'])
}
render g.select(id:'subCategory', name:'subCategory.id',
from:subCategories, optionKey:'id', noSelection:[null:' ']
)
}
}
В головной части я добавил <g:javascript library='jquery' />
Когда я пытаюсь изменить параметр в выберите тег я не вижу выход на консоль, которая должна быть показана от линии println "test"
внутри контроллера. Это означает, что функция контролера никогда не называется, что я делаю неправильно? Как я могу убедиться, что этот вызов функции действительно происходит?