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 will be updated with the form submit response</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()
        }
    }