    Action
      Action.Submit

# Class Ext.form.Action.Submit

Package: | Ext.form
Defined In: | Action.js
Class: | Action.Submit
Subclasses: | Action.DirectSubmit
Extends: | Action

A class which handles submission of data from Forms and processes the returned response.

Instances of this class are only created by a Form when submitting.

Response Packet Criteria

A response packet may contain:

- `success` property : Boolean
  The `success` property is required.
- `errors` property : Object
  The `errors` property, which is optional, contains error messages for invalid fields.

JSON Packets

By default, response packets are assumed to be JSON, so a typical response packet may look like this:

    {
        success: false,
        errors: {
            clientCode: "Client not found",
            portOfLoading: "This field must not be null"
        }
    }

Other data may be placed into the response for processing by the Ext.form.BasicForm's callback or event handler methods. The object decoded from this JSON is available in the result property.

Alternatively, if an errorReader is specified as an XmlReader:

    errorReader: new Ext.data.XmlReader({
                record : 'field',
                success: '@success'
            }, [
                'id', 'msg'
            ]
        )

then the results may be sent back in XML format:

    <?xml version="1.0" encoding="UTF-8"?>
    <message success="false">
    <errors>
        <field>
            <id>clientCode</id>
            <msg><![CDATA[Code not found. <br /><i>This is a test validation message from the server </i>]]></msg>
        </field>
        <field>
            <id>portOfLoading</id>
            <msg><![CDATA[Port not found. <br /><i>This is a test validation message from the server </i>]]></msg>
        </field>
    </errors>
    </message>

Other elements may be placed into the response XML for processing by the Ext.form.BasicForm's callback or event handler methods. The XML document is available in the errorReader's xmlData property.

## Config Options

Config Options | Defined By
--- | ---
| clientValidation : boolean Determines whether a Form's fields are validated in a final call to isValid prior to submission. Pass false in the Fo... Determines whether a Form's fields are validated in a final call to isValid prior to submission. Pass `false` in the Form's submit options to prevent this. If not defined, pre-submission field validation is performed. | Action.Submit
| errorReader : Ext.data.DataReader Optional. JSON is interpreted with no need for an errorReader. A Reader which reads a single record from the returned... Optional. JSON is interpreted with no need for an errorReader. A Reader which reads a single record from the returned data. The DataReader's success property specifies how submission success is determined. The Record's data provides the error messages to apply to any invalid form Fields. | Action.Submit
| failure : Function The function to call when a failure packet was recieved, or when an error ocurred in the Ajax communication. The func... The function to call when a failure packet was recieved, or when an error ocurred in the Ajax communication. The function is passed the following parameters: form : Ext.form.BasicForm The form that requested the action action : Ext.form.Action The Action class. If an Ajax error ocurred, the failure type will be in failureType. The result property of this object may be examined to perform custom postprocessing. | Action
| method : String The HTTP method to use to access the requested URL. Defaults to the Ext.form.BasicForm's method, or if that is not sp... The HTTP method to use to access the requested URL. Defaults to the Ext.form.BasicForm's method, or if that is not specified, the underlying DOM form's method. | Action
| params : Mixed Extra parameter values to pass. These are added to the Form's Ext.form.BasicForm.baseParams and passed to the specifi... Extra parameter values to pass. These are added to the Form's Ext.form.BasicForm.baseParams and passed to the specified URL along with the Form's input fields. Parameters are encoded as standard HTTP parameters using Ext.urlEncode. | Action
| reset : Boolean When set to true, causes the Form to be reset on Action success. If specified, this happens before the success callba... When set to `true`, causes the Form to be reset on Action success. If specified, this happens before the success callback is called and before the Form's actioncomplete event fires. | Action
| scope : Object The scope in which to call the callback functions (The `this` reference for the callback functions). | Action
| submitEmptyText : Boolean If set to `true`, the emptyText value will be sent with the form when it is submitted. Defaults to `true`. | Action
| success : Function The function to call when a valid success return packet is recieved. The function is passed the following parameters:... The function to call when a valid success return packet is recieved. The function is passed the following parameters: form : Ext.form.BasicForm The form that requested the action action : Ext.form.Action The Action class. The result property of this object may be examined to perform custom postprocessing. | Action
| timeout : Number The number of seconds to wait for a server response before failing with the failureType as Action.CONNECT_FAILURE. If... The number of seconds to wait for a server response before failing with the failureType as Action.CONNECT_FAILURE. If not specified, defaults to the configured `timeout` of the form. | Action
| url : String The URL that the Action is to invoke. | Action
| waitMsg : String The message to be displayed by a call to Ext.MessageBox.wait during the time the action is being processed. | Action
| waitTitle : String The title to be displayed by a call to Ext.MessageBox.wait during the time the action is being processed. | Action

## Public Properties

Property | Defined By
--- | ---
| CLIENT_INVALID : String Failure type returned when client side validation of the Form fails thus aborting a submit action. Client side valida... Failure type returned when client side validation of the Form fails thus aborting a submit action. Client side validation is performed unless clientValidation is explicitly set to `false`. | Action
| CONNECT_FAILURE : String Failure type returned when a communication error happens when attempting to send a request to the remote server. The ... Failure type returned when a communication error happens when attempting to send a request to the remote server. The response may be examined to provide further information. | Action
| LOAD_FAILURE : String Failure type returned when the response's <tt style="font-weight:bold">success property is set to false, or no field ... Failure type returned when the response's `success` property is set to `false`, or no field values are returned in the response's `data` property. | Action
| SERVER_INVALID : String Failure type returned when server side processing fails and the result's <tt style="font-weight:bold">success propert... Failure type returned when server side processing fails and the result's `success` property is set to `false`. In the case of a form submission, field-specific error messages may be returned in the result's `errors` property. | Action
| failureType : String The type of failure detected will be one of these: CLIENT_INVALID, SERVER_INVALID, CONNECT_FAILURE, or LOAD_FAILURE. ... The type of failure detected will be one of these: CLIENT_INVALID, SERVER_INVALID, CONNECT_FAILURE, or LOAD_FAILURE. Usage:
    var fp = new Ext.form.FormPanel({
    ...
    buttons: [{
        text: 'Save',
        formBind: true,
        handler: function(){
            if(fp.getForm().isValid()){
                fp.getForm().submit({
                    url: 'form-submit.php',
                    waitMsg: 'Submitting your data...',
                    success: function(form, action){
                        // server responded with success = true
                        var result = action.result;
                    },
                    failure: function(form, action){
                        if (action.failureType === Ext.form.Action.CONNECT_FAILURE) {
                            Ext.Msg.alert('Error',
                                'Status:'+action.response.status+': '+
                                action.response.statusText);
                        }
                        if (action.failureType === Ext.form.Action.SERVER_INVALID){
                            // server responded with success = false
                            Ext.Msg.alert('Invalid', action.result.errormsg);
                        }
                    }
                });
            }
        }
    },{
        text: 'Reset',
        handler: function(){
            fp.getForm().reset();
        }
    }]
| Action
| response : Object The XMLHttpRequest object used to perform the action. | Action
| result : Object The decoded response object containing a boolean <tt style="font-weight:bold">success property and other, action-spec... The decoded response object containing a boolean `success` property and other, action-specific properties. | Action
| type : String The type of action this Action instance performs. Currently only "submit" and "load" are supported. | Action

## Public Methods

This class has no public methods.

## Public Events

This class has no public events.