# <submit>

Description

Submit values to document server, and transition to the document sent back in the response. It is similar to `<goto>` in that it results in a new document being obtained, and transitions to that new document. Unlike `<goto>`, it includes a namelist to submit a list of variables to the document server via HTTP GET or HTTP POST. If you do not want to submit any variables, use `<goto>` instead.

Syntax

    <submit
        next="URI"
        expr="ECMAScript_Expression"
        namelist="variable1 variable2 ..."
        method="get" | "post"
        enctype="MIME_type"
        fetchaudio="URI"
        fetchaudiodelay="time_interval"
        fetchaudiominimum="time_interval"
        fetchhint="safe"
        fetchtimeout="time_interval"
        maxage="integer"
        maxstale="integer">
      child elements
    </submit>

Attributes

Attribute | Description
next | The URI of the submit request. The application will transition to the document sent back in the response. Exactly one of next or expr must be specified.
expr | An ECMAScript expression to be evaluated and used as the URI of the submit request, as documented under `next`, above. Exactly one of next or expr must be specified.
namelist | A space-separated list of variables to submit with the request. The empty string is treated as the default. Optional. (Defaults to all the named input item variables in the current form.)
method | The request method: get or post. Optional. (Defaults to get.)
enctype | The MIME encoding of the submitted data. The following types are supported: application/x-www-form-urlencoded multipart/form-data Optional. (Defaults to application/x-www-form-urlencoded.)
fetchaudio | The URI of audio to play while waiting for the document to be fetched. Optional.
fetchaudiodelay | The length of time to wait at the start of the fetch delay before playing `fetchaudio`. Optional.
fetchaudiominimum | The minimum length of time to play `fetchaudio`, once started, even if the document arrives in the meantime. Optional.
fetchhint | Defines when the next document should be fetched. Optional. safe - only load the next document when needed
fetchtimeout | The length of time to wait for the next document to be fetched before throwing an `error.badfetch` event. Optional.
maxage | Indicates that this document is willing to use a cached copy of the next document only while the age of the cached copy is less than or equal to the number of seconds specified by this attribute. Optional.
maxstale | Indicates that this document is willing to use a cached copy of the next document that has exceeded its expiration time by as much as the number of seconds specified by this attribute. Optional.

Attribute Notes

- An `error.semantic` event is thrown if an undeclared variable name is used in the `namelist`.
- An `error.badfetch` event is thrown if more or less than one of `next` and `expr` are specified.

Parents

<block>, <catch>, <error>, <filled>, <foreach>, <help>, <if>, <noinput>, <nomatch>

Children

None.

Extensions

- Added `fetchaudiodelay` attribute.
- Added `fetchaudiominimum` attribute.

Limitations/Restrictions

- When submitting ECMAScript objects in the `namelist`, the object will be "flattened", ie. all the object's properties will be submitted separately. For example, if object `o` has two properties, `p1` and `p2`, such that `o.p1 = "value1"` and `o.p2 = "value2"`, and the following transition is made:
  `<submit next="test.jsp" namelist="o" ...>`
  then the HTTP request will contain `o.p1=value1&o.p2=value2`. Remember to retrieve the properties separately (as `o.p1` and `o.p2`) in the server-side code used to generate the next page.

- The order in which the parameters are sent in an HTTP request may not be the same as the order specified in the `namelist`

- The use of POST is recommended when submitting a long list of variables. If you use GET (where the entire request is a single line), there may be a limit configured on the request length. Exceeding this limit will result in an `error.badfetch`. This limit may be configured by squid (on the IP Media Server platform), or may be overridden by application server configuration.

- `<submit>` cannot be used as a child of `<foreach>` when `<foreach>` is a child of `<prompt>`.

Example

    <?xml version="1.0"?>
    <vxml version="2.0" xmlns="http://www.w3.org/2001/vxml">
      <form>
        <field name="field1" type="boolean">
          <prompt> Please say yes or no. </prompt>
          <filled>
            You said <value expr="field1"/>.
            <submit next="process.cgi" method="post" namelist="field1"/>
          </filled>
        </field>
      </form>
    </vxml>