2013-03-18 1 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 link - добавить переменную javascript в params

переменная generared из клиентской входа:

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

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

является «целевой» стороной на стороне клиента? –

+0

clientside js var – thegrunt

+1

Тогда как вы ожидаете разобрать его на стороне сервера? –

ответ

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()}';' и аналогично для значений params ('what: '$ {what.encodeAsJavaScript()}', ... '), если любой из них содержит символы, которые нуждаются в специальной обработке в строковых литералах JavaScript. –

+0

спасибо. вы уверены в «$ .params (params)»? – thegrunt

+0

Uncaught TypeError: функция объекта (e, t) {return new v.fn.init (e, t, n)} не имеет параметров 'params' – thegrunt