submitToRemote
Purpose
Creates a button that submits the surrounding form as a remote ajax call serializing the fields into parameters.Examples
Example controller for an application called "shop":class BookController {
def list = { [ books: Book.list( params ) ] }
def show = { [ book : Book.get( params['id'] ) ] }
}
Example usages for above controller:<g:form action="show">
Login: <input name="login" type="text"></input>
<g:submitToRemote update="updateMe" />
</g:form>
<div id="updateMe">this div is updated by the form</div>
Description
Attributes
url
- The url to submit to, either a map contraining keys for the action,controller and id or string value
update
(optional) - Either a map containing the elements to update for 'success' or 'failure' states, or a string with the element to update in which cause failure events would be ignored
before
(optional) - The javascript function to call before the remote function call
after
(optional) - The javascript function to call after the remote function call
asynchronous
(optional) - Whether to do the call asynchronously or not (defaults to true)
method
(optional) - The method to use the execute the call (defaults to "post")
Events
onSuccess
(optional) - The javascript function to call if successful
onFailure
(optional) - The javascript function to call if the call failed
on_ERROR_CODE
(optional) - The javascript function to call to handle specified error codes (eg on404="alert('not found!')")
onUninitialized
(optional) - The javascript function to call the a ajax engine failed to initialise
onLoading
(optional) - The javascript function to call when the remote function is loading the response
onLoaded
(optional) - The javascript function to call when the remote function is completed loading the response
onComplete
(optional) - The javascript function to call when the remote function is complete, including any updates
Source
Show Source
def submitToRemote = { attrs, body ->
// get javascript provider
def p = getProvider()
// prepare form settings
attrs.forSubmitTag = ".form"
p.prepareAjaxForm(attrs)
def params = [ onclick:remoteFunction(attrs) + 'return false',
type: 'button',
name: attrs.remove('name'),
value: attrs.remove('value'),
id: attrs.remove('id'),
'class':attrs.remove('class')
] out << withTag(name:'input', attrs:params) {
out << body()
}
}