跳转和传递参数

任务与导航-赋值与数据交换

这一部分简单讲解WML的变量赋值和数据提交方法,在后面的章节中有专门讲解。

变量赋值(Setvar)

  Setvar给浏览器的当前页面内变量赋值,该变量可以在当前Dock中的任意Card中调用。

  相关属性:

  1. name 变量名,作为访问变量的标识

    示例:<setvar name=$bogus value=$bear>

  2. value变量的值

数据交换(Postfield)

  Postfield通过URL申请与CGI交换数据。

  相关属性:

  name & value 交换参数用的变量的名字和值。

  示例:<postfield name=$bogus value=$bear>

一个综合应用的例子

示例:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml">
<wml>

<card id="Start" title="Sina WAP">
<do type="accept">
  <setvar name="MyCGI" value="/cgi-bin/count.pl">
  <go href="$MyCGI" method="post">
    <postfield name="one" value="one one"/>
    <postfield name="two" value="two two"/>
  </go>
 </do>
<p>Hello World!</p>
</card>
</wml>

上例相当于产生一个count.pl?one="one one"&two="two two"的Post申请。


实现Card之间跳转的一个基本方法是go,go和do、anchor等标签的结合是WML高级应用的一个基础。

  相关属性:

  href:声明链接的URL

  sendreferer:表示是否传递调用href所指定的URL的页面的URL,也就是当前页的URL,即HTTP头中的HTTP_REFERER,默认值为false,可选值为true

  method:WML的method与HTTP提交表单的方法类似,同样有Post和Get两种,缺省参数为Get。

  Post与Get的不同:Post在发送前要进行编码处理,然后分组发送,发送过程相对安全,适合大数据量的处理;而Get方法不进行任何处理,一次性发出,适合小数据量交换。除非你肯定你提交的数据可以一次性提交,否则请尽量用Post方法。

  accept-charset:定义浏览器与服务器之间收发信息的字符集类型,例如:accept-charset="UTF-8,US-ASCII,ISO-8859-1"

示例:

<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.com/DTD/wml_1.1.xml">
<wml>

<card id="Start">
  <do type="accept" label="next">
    <go href="#nextCard"/>
  </do>
<p>This is the First Card!</p>
</card>

<card id="nextCard">
  <do type="prev" label="before">
    <prev/>
  </do>
<p>This is the last card!</p>
</card>
</wml>

Go结合Postfield交换参数

标签Go可以包含一个或多个Postfield标签,用这些标签携带参数与服务器进行数据交换。

示例1:产生一个"quote.pl?stock=00001"Get申请

<go href="/cgi-bin/quote.pl">
  <postfield name="stock" value="00001"/>
</go>

示例2:产生一个"stockname=证券&page=1"Post申请

<go href="/cgi-bin/query.pl" method="post">
  <postfield name="stockname" value="证券"/>
  <postfield name="page" value="1"/>
</go>


posted on 2005-05-14 10:23  龚祺  阅读(553)  评论(0编辑  收藏  举报