WML - 向服务器提交数据



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

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

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

在前面的章节中,我们解释了从用户那里获取输入的各种方法。这些输入元素将 WML 变量设置为输入的值。我们也知道如何从 WML 变量中获取值。因此,以下示例显示了如何将三个字段姓名、年龄性别提交到服务器。

<?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 设备上下载上述代码时,它将为您提供输入三个字段姓名、年龄性别以及一个链接提交数据的选项。您将输入三个字段,然后最后选择提交数据链接以将输入的数据发送到服务器。

<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 属性用于指定用于存储表单数据的变量的名称。

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

广告