【问题标题】:grails link - add javascript variable into paramsgrails 链接 - 将 javascript 变量添加到参数中
【发布时间】:2013-03-18 14:20:32
【问题描述】:
$('#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 不接受这个,如何正确插入变量?

该变量是从输入生成的客户端:

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

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

【问题讨论】:

  • destination 客户端变量上的服务器端?
  • 那么你希望如何在服务器端解析它?

标签: javascript grails


【解决方案1】:

&lt;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>');

【讨论】:

  • 为了安全起见,您应该使用var urlBase = '${createLink(...).encodeAsJavaScript()}';,同样对于参数值 (what:'${what.encodeAsJavaScript()}', ...),以防其中任何一个包含需要在 JavaScript 字符串文字中进行特殊处理的字符。
  • Uncaught TypeError: Object function (e,t){return new v.fn.init(e,t,n)} has no method 'params'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多