从Grails中的外部文件引用时,JQuery无法正常工作

时间:2014-09-27 16:38:52

标签: javascript jquery grails grails-2.4

我必须根据我在另一个下拉列表中选择的值动态加载一组值。

在控制器中,我有以下代码,

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时。这个问题正在发生。

1 个答案:

答案 0 :(得分:0)

那不是JavaScript。它是使用taglib和Groovy代码的Grails GSP表达式。它在运行时生成 JavaScript,写入发送到浏览器的HTML,以及它在GSP中运行的原因。但是没有处理.js文件来查找GSP表达式,taglib调用,Groovy代码等等 - 假设这些文件只是静态JavaScript。

要在.js文件中使用它,您需要获取生成的JavaScript代码,这可以从您的浏览器中获取 - 查看生成的页面的来源以查看它。