2015-10-21 6 views
0

В течение Грааль зрения я должен вызвать яваскрипт метод, чтобы получить некоторую информацию и поэтому у меня представить действие, как это:Grails Javascript метода контроллера вызовов

<input type="submit" name="submit" class="submit action-button" value="Generar" onclick="generateReport()" style="float: right" /> 

и в конце generateReport() I нужно позвонить/перенаправление на show действия контроллера (потому что я нахожусь на create действия уже)

I'have попытался с

1) var jSon = generateJSON(); 
    <g:remoteFunction controller="report" action="show" params="[data:jSon]" /> 

2) var jSon = generateJSON(); 
    <g:remoteFunction controller="report" action="show" params="[data:${jSon}]" /> 

1) данные достигает нулевой 2) Ошибка компиляции:

org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException 
Message 
Attribute value quote wasn't closed (controller="report" action="show" params="[data:${jSon}]"). 
+1

Вы не должны использовать 'remoteFunction' или любой из' 'удаленных * тегов. Они старые, с которыми трудно работать, и больше не поддерживаются в новых версиях Grails. Вам нужно научиться создавать свои собственные вызовы ajax с помощью jquery/javascript. –

ответ

0

уаг не JSON может быть назначен в качестве данных Params в, а вар JSon является переменной Javascript. Для атрибутов params атрибут параметра модели поступает от контроллера.

В 1-й вариант, когда он назначен как параметр, поскольку он не является параметром модели от контроллера, его отображение null.

2-й вариант не работает, так как это не способ определить параметр модели с контроллера, поэтому давая скомпилировать ошибку.

Так что вам лучше попробовать получить jSon как модель от контроллера, а затем определить как params.

Или вы можете по этой ссылке, чтобы определить г: remoteFunction в OnClick себя

http://grails.github.io/grails-doc/2.2.1/ref/Tags/remoteFunction.html

Надежда это помогает! Благодарю.

0

remoteFunction тег не будет работать для вашей ситуации, потому что он оказывается в HTML и JavaScript (со стороны сервера) перед тем значение JSon известно (на стороне клиента).

Вам нужно будет сделать вызов ajax самостоятельно (например, JQuery).

0

вы можете попробовать это ..

объявить переменную в вашем GSP, как это ..

<script type="text/javascript"> 
      var yourVariable = "${createLink(url: [controller: 'yourController', action: 'yourAction'])}"; 
</script> 

Затем в JS file..you может использовать AJAX.

пример Аякса

function checkUsernameAvailable(user, example){ 
    $.ajax(
    { 
     url: yourVariable, <- this variable take from your gsp 
     contentType:"text/json", 
     type: "get", 
     data: ({ id: usernamenya}), 
     dataType: "json", 
     cache: false, 
     async: false, 
     success: function(data) { 
       //do something here 
     }, 
     error: function(xhr) { 
     } 
    });     
} 
Смежные вопросы