2012-11-14 72 views
0

好的,我是javascript/grails新手,我不確定這裏要做什麼。從javascript函數更新groovy字符串中的多個參數

基本上我有一個JavaScript函數被多個參數調用,我想將它們替換成grails可分析字符串。

我有一些grails下拉式調用javascript函數來鏈接到另一個頁面,需要傳遞多個參數(商品編號和數量)。

下面是選擇:

<g:select optionKey="key" optionValue="value" value="${item.getQty()}" name="qty" from="[1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9]" 
onchange="goToPage('qty${item.id}',this.value)"></g:select> 

JavaScript函數:

<script type="text/javascript"> 
function goToPage(itemId, val){ 
window.location.href="${createLink(controller:'GOrder' ,action:'updateShoppingCart' params:[item: "", qty: ""])}" + itemId + val; 
} 

所以,它採用的itemId和Val,concats他們並取代與最後一組引號即連接值。我想要發生的是爲每個參數替換其中一組引號。

我真的不明白如何看起來像串連一個字符串實際上取代了一個值。

謝謝!

回答

1

你在這裏混淆了你的服務器和客戶端。該

${createLink(controller:'GOrder' ,action:'updateShoppingCart' params:[item: "", qty: ""])} 

由Grails的計算在服務器端渲染GSP成HTML的時候,所以你最終在你的JavaScript將會像

function goToPage(itemId, val){ 
    window.location.href="/myapp/GOrder/updateShoppingCart?item=&amp;qty=" + itemId + val; 
} 

你可能就要是什麼剛生成的基本URL最多的Grails的側問號,然後在JavaScript中添加查詢參數在客戶端

function goToPage(itemId, val){ 
    window.location.href= 
    "${createLink(controller:'GOrder', action:'updateShoppingCart' 
     ).encodeAsJavaScript()}?item=" + encodeURIComponent(itemId) 
    + "&amp;qty=" + encodeURIComponent(val); 
} 

注意我添加方式- 當生成要包含在JavaScript字符串文字中的值時,您應該始終使用此參數,它將反斜槓轉義任何需要它的內容。同樣,要添加到URL的任何JavaScript字符串都需要使用JavaScript encodeURIComponent函數進行編碼 - 例如,如果itemId的值是「第一項」,則需要將item%20one附加到URL。

+0

我剛剛弄清楚了一些類似的東西,但對編碼的建議很好!謝謝! – clovold

+0

我很想知道URL中的編碼'&',但除此之外,這就是票據。 –

相關問題