<submit> element is used to submit information to the origin web server and then transition to the document sent back in the response. Unlike
<goto>, it lets you submit a list of variables to the document server via an HTTP GET or POST request.
This attribute is not supported.
(defaults to “fetchtimeout” global property value) The timeout for fetches. Must be specified with the appropriate time units (e.g., “120s” for 120 seconds).
(defaults to “documentmaxage” global property value) Tells the platform the maximum acceptable age, in seconds, of cached documents.
(defaults to “documentmaxstale” global property value) Tells the platform the maximum acceptable staleness, in seconds, of expired cached documents.
The URI reference.
Like next, except that the URI reference is dynamically determined by evaluating the given ECMAScript expression.
(defaults to “fetchaudio” global property value) The URI of the audio clip to play while the fetch is being done.
(defaults to “get”) The request method: get, post, or raw.
(defaults to “application/x-www-form-urlencoded”) This attribute specifies the HTTP POST encoding format. The other permissible choices are “multipart/form-data”, which is the encoding method used by the platform when binary data is being submitted, “application/xml”, when fetching raw XML, and “application/json”, when fetching raw JSON.
The raw XML or JSON string to submit to the URI. You can only use this attribute when using the “raw” method and either the “application/xml” or “application/json” enctype.
The list of variables to submit. The default is to submit no variables. If a namelist is supplied, it may contain individual variable references that are submitted with the same qualification used in the namelist. Declared VoiceXML and ECMAScript variables can be referenced.
Exactly one of “next” and “expr” must be specified.
When setting the “method” attribute to “post”, the platform does a normal POST with the variables passed in the namelist encoded as “application/x-www-form-urlencoded” or “multipart/form-data”. After encoding the namelist, the platform passes the data and tells the server that the data is encoded with whatever format it used to encode.
However, when setting the “method” attribute to “raw”, the “raw” type is still a POST request, but does two things to change the default behavior, allowing control over both the data and the encoding type reported to the server:
It passes the encoding that was provided in the “enctype” attribute as the encoding to the web server.
<?phpheader("Content-type: text/xml");echo "<?xml version=\"1.0\"?>\n";?><vxml version="2.0"><var name="license_number"/><var name="request_type"/><form><field name="license" type="digits"><prompt>Please enter your driver's license number.</prompt><filled><assign name="license_number" expr="license"/></filled></field><field name="request"><grammar type="application/srgs+xml" mode="dtmf" root="choice" maxdigits="1"><rule id="choice"><one-of><item>1</item><item>2</item></one-of></rule></grammar><prompt>To renew your license, press 1. To request a new license plate, press 2.</prompt><filled><assign name="request_type" expr="request"/><submit next="process_request.php" method="post" namelist="license_number request_type" fetchtimeout="60s"/></filled></field></form></vxml>
<?phpheader("Content-type: text/xml");echo("<?xml version=\"1.0\"?>\n");// get the variables posted to this script$name = $_POST['license_number'];$license = $_POST['request_type'];// here we could process the data by entering the information into a database or calling a webservice?><vxml version="2.0"><form><block><prompt>Thank you. We will process your request and get back to you shortly. Goodbye.</prompt><exit/></block></form></vxml>
The output of the above script would be:
Computer: Please enter your driver's license number. Human: <user enters: 1 2 3 4 5> Computer: To renew your license, press 1. To request a new license plate, press 2. Human: <user enters: 2> Computer: Thank you. We will process your request and get back to you shortly. Goodbye.