2014-09-27 127 views
0

我必須根據我在另一個下拉列表中選擇的值動態加載一組值。從Grails中的外部文件引用時JQuery不工作

在控制器I有以下代碼,

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,那麼文件中的所有其他腳本在引用該文件的任何位置都運行良好。當我將GSP的javascript移動到index.js時。發生此問題。

回答

0

這不是JavaScript。這是一個使用taglib和Groovy代碼的Grails GSP表達式。它生成 JavaScript在運行時被寫入發送到瀏覽器的HTML,這就是它在GSP中的原因。但是沒有處理.js文件來查找GSP表達式,taglib調用,Groovy代碼等 - 這些文件被假定爲靜態JavaScript。

要在.js文件中使用此代碼,您需要獲取生成的JavaScript代碼,並且可以在瀏覽器中使用它 - 查看生成的頁面的源代碼以查看它。

相關問題