0

OK、私は JavaScript/Grails の初心者で、ここで何をすればよいかわかりません。

基本的に、複数のパラメーターで呼び出される JavaScript 関数があり、それらを grails の解析可能な文字列に置き換えたいと考えています。

javascript関数を呼び出して、渡す必要のある複数のパラメーター(アイテム番号と数量)を含む別のページにリンクするgrailsドロップダウンがいくつかあります。

ここに選択があります:

<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 を取得し、それらを連結して、最後の引用符のセットをその連結された値に置き換えます。私がやりたいのは、各パラメーターが引用符のセットの1つを置き換えることです。

文字列を連結するように見えるものが実際に値を置き換える方法が本当にわかりません。

ありがとう!

4

1 に答える 1

1

ここでは、サーバー側とクライアント側が混同されています。The

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

GSPをHTMLにレンダリングするときに、サーバー側のGrailsによって評価されるため、JavaScriptで最終的には次のようになります。

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

代わりにおそらく必要なのは、Grails側の疑問符までのベースURLだけを生成し、JavaScriptでクライアント側のクエリパラメーターを追加することです。

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

私が追加した方法に注意してくださいencodeAsJavaScript()-JavaScript文字列リテラルに含まれる値を生成するときは常にこれを使用する必要があります。それはそれを必要とするものをバックスラッシュエスケープします。同様に、URLに追加するJavaScript文字列は、JavaScriptencodeURIComponent関数を使用してエンコードする必要があります。itemIdたとえば、の値が「アイテム1」の場合item%20one、URLに追加する必要があります。

于 2012-11-14T14:43:21.663 に答える