2013-08-07 6 views
1

Я искал в Google действительно хорошее время, и я не могу найти решение этой проблемы. Я пытаюсь получить доступ к переменной JavaScript из моего файла GSP в моем контроллере Groovy, но я не могу узнать, как это сделать.Как передать переменную JavaScript в контроллер Groovy?

Пример:

//JavaScript stuff 
<script> 
    function validateForm(){ 
     var ret = false 
    } 
</script> 

//Groovy controller stuff 
def myAction = { 
    println params.ret 
} 

Как добиться чего-то похожее на это?

+0

Вы еще что-нибудь пробовали (с сессией по крайней мере)? – dmahapatro

+0

Я пробовал remoteFunction, но я получаю ошибку сценария Java, поэтому он может работать, но я не знаю его синтаксиса. Вот как у меня это в моем javascript '$ {remoteFunction (controller: ActionsController, action: 'ImplementNewPixel', params: 'ret')}' Но нет, я еще ничего не пробовал с сеансами. Как вы будете использовать сеансы? –

+0

Вы должны иметь возможность передать переменную с помощью remoteFunction. Посмотрите, как параметры передаются в [remoteFunction] (http://grails.org/doc/latest/ref/Tags/remoteFunction.html). – dmahapatro

ответ

2

Два способа передать переменную в контроллер:

  1. Ajax
  2. Форма представить

Ajax

  • Использование remoteFunction

    ${remoteFunction(controller: 'actionsController' , action: 'implementNewPixel', params: '\'ret=\' + ret')} 
    
  • Использование Ajax

    var ret = false; 
    jQuery.ajax({ 
        url: "${createLink(controller: 'actionsController', action: 'implementNewPixel')}", 
        data: "ret=" + ret, 
        success: function (data) { 
         alert(data); 
        } 
    }); 
    

т.д.

Форма представить

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script> 
    var ret; 
    function validateForm(){ 
     ret = false; 
    } 

    jQuery(function() { 
     jQuery("[name='jftForm']").submit(function() { 
      jQuery("[name='ret']").val(ret); 
     }); 
    }); 
</script> 

<g:form name="jftForm" controller="actionsController" action="implementNewPixel"> 
    ... 
    <g:hiddenField name="ret" value=""/> 
    <g:submitButton name="submit" value="Submit"/> 
</g:form> 
+0

Я пробовал оба метода, но я до сих пор не могу получить доступ к переменной в моем контроллере. Могу ли я получить к нему доступ, используя 'params.ret' в моем контроллере? Кроме того, когда я пытаюсь использовать метод отправки формы, я получаю ошибку скрипта java, например, 'Uncaught ReferenceError: $ не определен. РеализованNewPixel: 133 (анонимная функция)' –

+0

Включите jQuery на свою страницу. – user1690588

+0

Хорошо. Это исправило это. Благодаря! –

Смежные вопросы