WML - 向服务器提交数据

很多时候,您会希望用户向您的服务器提交一些数据。 与 HTML Form 类似,WML 也提供了一种将用户数据提交到 Web 服务器的机制。

要将数据提交到 WML 中的服务器,您需要 <go>...</go> 和 <postfield/> 标签。<postfield/> 标签应包含在 <go>...</go> 标签对中。

为了将数据提交到服务器,我们收集所有设置的 WML 变量并使用 <postfield> 元素将它们发送到服务器。 <go>...</go> 元素用于将发布方法设置为 POST 或 GET,并指定服务器端脚本来处理上传的数据。

在前面的章节中,我们已经解释了从用户那里获取输入的各种方法。 这些输入元素将 WML 变量设置为输入的值。 我们还知道如何从 WML 变量中获取值。 所以现在下面的例子展示了如何向服务器提交三个字段name,agesex

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.2//EN"
"http://www.wapforum.org/DTD/wml12.dtd">

<wml>

<card id="card1" title="WML Form">
<p>
   Name: <input name="name" size="12"/>
   Sex : <select name="sex">
      <option value="male">Male</option>
      <option value="female">Female</option>
      </select>
   Age :  <input name="age" size="12" format="*N"/>
   <anchor>
      <go method="get" href="process.php">
          <postfield name="name" value="$(name)"/>
          <postfield name="age" value="$(age)"/>
          <postfield name="sex" value="$(sex)"/>
      </go>
      Submit Data
    </anchor>
</p>
</card>

</wml>

当您在 WAP 设备上下载上述代码时,您可以选择输入三个字段name,agesex以及一个链接ubmit Data. 您将输入三个字段,最后选择ubmit Data链接将输入的数据发送到服务器。

<go> 标签的 method 属性指定应使用哪种 HTTP 方法来发送表单数据。

如果使用HTTP POST方法,则要发送的表单数据将放在请求的消息体中。 如果使用 HTTP GET 方法,则要发送的表单数据将附加到 URL 中。 由于 URL 只能包含有限数量的字符,因此 GET 方法的缺点是发送的数据有大小限制。 如果用户数据包含非 ASCII 字符,则应使用 POST 方法以避免编码问题。

HTML 和 WML 之间有一个主要区别。 在 HTML 中,<input> 和 <select> 标签的 name 属性用于指定要发送的参数的名称,而在 WML 中,<postfield> 标签的 name 属性用于执行相同的操作。 在WML中,<input> 和 <select>的name属性用于指定存储表单数据的变量的名称。

下一章将教你如何在服务器端处理上传的数据。