2013-03-18 64 views
0
$('#andiebox').append('<g:link controller="search" action="search" params="[where:'+destination+', what:what, sort:sort, type:type, distance:distance]">Psychos in HH</g:link>'); 

這不被grails接受,我如何正確插入變量?grails鏈接 - 將javascript變量添加到參數

的變量是客戶方從輸入generared:

var destination = $(this).attr("id"); 

      var metaSection = $("#metaSection").val(); 
+1

是客戶端變量上的「目標」服務器端? – 2013-03-18 14:44:12

+0

clientside js var – thegrunt 2013-03-18 14:44:40

+1

那麼你如何期望解析它的服務器端? – 2013-03-18 14:52:34

回答

4

<g:link是服務器端的標籤,所以它只能準備基地,以你的鏈接。所有客戶端參數都應在客戶端填寫。例如:

var params = { 
    what: '${what.encodeAsJavaScript()}', //as I understand all this variables are server side variables 
    sort: '${sort.encodeAsJavaScript()}', 
    type: '${type.encodeAsJavaScript()}', 
    distance: '${distance.encodeAsJavaScript()}' 
}; 
params.destination = $(this).attr("id"); 
var urlBase = '${createLink(controller:"search", action: "search").encodeAsJavaScript()}'; 

$('#andiebox').append('<a href="' + url + '?' + $.serialize(params) + '">Psychos in HH</a>'); 
+1

爲了安全起見,你應該使用'var urlBase ='$ {createLink(...)。encodeAsJavaScript()}';',並且類似地爲參數值('what:'$ {what.encodeAsJavaScript()}' ...),以防其中任何一個包含需要JavaScript字符串文字特殊處理的字符。 – 2013-03-18 14:59:06

+0

謝謝。你確定使用「$ .params(params)」嗎? – thegrunt 2013-03-18 15:17:24

+0

Uncaught TypeError:Object function(e,t){return new v.fn.init(e,t,n)}沒有方法'params' – thegrunt 2013-03-18 15:19:47