我必须根据我在另一个下拉列表中选择的值动态加载一组值。
在控制器中,我有以下代码,
def ajaxGetCities(params){
println params.id
def userCustPlantDetails = utilitySummaryService.fetchUserCustPlantDetails('PHILL00')
def data = []
userCustPlantDetails?.get('UserPlantList').collect{
data << it.pwr_plt_nme
}
[data: data]
}
在GSP中我有:
<g:select class="btn btn-default" name="viewValue" from="${view}" onchange="${remoteFunction(
action:'ajaxGetCities',
params:'\'id=\' + escape(this.value)',
onSuccess :'updateCity(data)')}"></g:select>
当我更改下拉列表的值时,我会看到触发器和控制器操作被调用。发布Javascript(JQuery)updateCity工作正常。我将脚本放在同一个.gsp文件中。如果我将此脚本移动到proj文件夹中的外部文件(在assets / javascript下)。页面未正确呈现。我的意思是没有渲染很少的组件。我在标记尝试放入GSP的所有内容之前放置了外部文件引用。如果没有上面提到的javascript,文件中的所有其他脚本在引用文件的任何地方都会运行得很好。当我将javascript从GSP移动到index.js时。这个问题正在发生。
答案 0 :(得分:0)
那不是JavaScript。它是使用taglib和Groovy代码的Grails GSP表达式。它在运行时生成 JavaScript,写入发送到浏览器的HTML,以及它在GSP中运行的原因。但是没有处理.js文件来查找GSP表达式,taglib调用,Groovy代码等等 - 假设这些文件只是静态JavaScript。
要在.js文件中使用它,您需要获取生成的JavaScript代码,这可以从您的浏览器中获取 - 查看生成的页面的来源以查看它。