gpt4 book ai didi

javascript - 通过 Ajax 在 Grails 中执行 Controller 功能

转载 作者:行者123 更新时间:2023-12-03 09:52:56 24 4
gpt4 key购买 nike

我是 Grails 中 ajax 的新手。我想尝试从 ajax 的 gsp 代码执行 Controller 方法。

这是我的 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参数中:restorator是一个包,region是其中的 Controller ,categoryChanged是一个action。

这是我的 Controller :

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" 显示 Controller 内的线。这意味着 Controller 函数从未被实际调用,我做错了什么?我如何确保这个函数调用确实发生了?

最佳答案

在页面上右键,检查Element,看看控制台是否有错误。

此外,您应该这样指定 URL:

url: '${createLink(controller: 'region', action: 'categoryChanged')}',

关于javascript - 通过 Ajax 在 Grails 中执行 Controller 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30828532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com