我是一個在Grails中使用ajax的新手。我想嘗試從ajax的gsp-code中執行一個控制器方法。通過Ajax在Grails中執行控制器功能
這是我的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>
在$ Ajax調用的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"
行。這意味着控制者函數從來沒有被實際調用,我做錯了什麼?我如何確保這個函數調用實際發生?