Grails RemoteFunction params syntax

前端 未结 5 1110
鱼传尺愫
鱼传尺愫 2020-12-31 20:01

I\'m trying to pass a couple of parameters to a remoteFunction in grails but I\'m struggling to format it correctly

I want to pass in the value of a piece of data on

相关标签:
5条回答
  • 2020-12-31 20:05

    Or you can pass the parameters separated by '&' like

    params:'\'param1=\'+this.value+\'&booleanParam2=true\''

    0 讨论(0)
  • 2020-12-31 20:06

    I had the same problem but all answers above did not help as the value I want to get are the selected value from the selection dropdown as well as the obj instance inside table that was being iterated. below was the solution.

    <g:select
                                                 from="${list}" 
                                          optionKey="value"
                                          optionValue="key"
    
                                          onchange="getValue(this.value, ${instance.id})"/>
    
        <script type="text/javascript">     
                  function getValue(Id1, Id2)
                  {
    
                      $.ajax({
                          type: 'POST',
                          url: '/app/controller/functionToCall',
                          data: { someId: Id1, otherId:Id2},
    
                      });
    
                  }
    
    0 讨论(0)
  • 2020-12-31 20:08
    <button type="button" class="btn btn-success" id="value-pie" onClick="ajaxFunction(this.value)">Confirmar</button>
    
    <script>
    function ajaxFunction(id){
         var obs = $("#observacion").val()
         var parameters = { "serieId":id,
                            "observacion":obs
                          }
         <g:remoteFunction controller="control"
                      action="ajax"
                      method="GET"
                      onSuccess="updateModal(data)"
                      params="parameters"/>
    }
    </script>
    
    0 讨论(0)
  • 2020-12-31 20:14

    It looks like you've mixed up server-side code with client-side code.

    The Grails code will be evaluated when the page is being "built" to be sent to the client browser.

    The Javascript code will be evaluated once the page has been delivered to the browser.

    With this in mind let's take a look at your onblur assignment:

    onblur=${remoteFunction(
             action:'dave', 
             update:'pack'+it.id, 
             params: [denom: document.getElementById(denomValue+${it.id}).value, 
                      amount: this.value ])}
    

    Given the ${remoteFunction...} call is a Grails tag, it will be evaluated on the server, generate a fixed string, then be sent to the client. Everything inside the call must be valid Groovy code.

    Look at the params map, you've added some Javascript in the denom value, inside the Groovy code:

    document.getElementById(denomValue
    

    then you try to add a value from Groovy

    +${it.id}
    

    then some Javascript again

    ).value
    

    The Groovy compiler will try to evaluate the Javascript as Groovy code and fail.

    If you need to access client-side parameters in Javascript you'll need to handle the Javascript yourself (and not use the remoteFunction tag), for example to handle the remote call:

    var path=${createLink(action:'dave',
                          params: [amount:this.value])} 
               + "&denom=" 
               + document.getElementById(denomValue+${it.id}).value
    

    You'll also need to handle the remote response yourself using Javascript to update the 'pack' elements. You could always look at what the remoteFunction call generates, copy it into the page and edit it to do what you want.

    HTH

    0 讨论(0)
  • 2020-12-31 20:20

    You can actually still use the remote function tag, you just have to write the parameters in a javascript object string, so this actually works quite well in stuff that I work with.

    var denomValue = document.getElementById(denomValue+${it.id}).value;
    onblur=${remoteFunction(
         action:'dave', 
         update:'pack'+it.id, 
         params: '{denom: denomValue, amount: this.value}'
         )}
    
    0 讨论(0)
提交回复
热议问题