2013-03-18 63 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