|
在网页编程(如php,asp)中常常涉及到页面之间值的传递接收问题。它是网页编程中一项基本的重要的必须掌握的知识点。它包括页面间值传递方式有哪些,哪些变量会传到目的页面,这些变量的值是什么,以及在目的页面中如何接收这些变量的值这些问题。深刻了解这些知识内容,对灵活地实现编程效果是很重要的。 首先,我来讲一下网页间值传递方式。 在有些书上把页面之间值传递按表单传递分get和post两种方式。我认为这样分不完整,不全面。而我根据自己的一些经验把网页之间值的传递归分为显现式和隐含式两种方式觉得这样更确切。 所谓显现式就是值在传递到目的页面的过程时,在浏览器的地址栏中页面地址后面会显示这些变量参数。隐含式方式参数是不会出现地址栏上的,所以具有安全性。 如果要传如下表(变量表1)的变量传到目的页面。 变量名:first idname password 值: yes baorongabc 12345 ―――――――――――表 变量表1―――――――――――――――――――――― 那么如何用显现式和隐含式实现呢?下面就是具体实现方法: 显现式: 1 在程序中写入,如: <form name="form1" method="post" action=" http://jada/ clubmember_enrol_perform.php?first=yes& idname=baorongabc&password=12345"> <a href=" http://jada/ clubmember_enrol_perform.php?first=yes& idname=baorongabc&password=12345">文章发表</a> 2.通过表单递交的get方式 此方式当按钮被按下后,表单的数据会附加在网址之后一起送到server。执行效率高,但可传送的数据只有2k左右。 程序如下程序代码(程序1): <from>标签中代码: <form name="form1" action="mytest_perform.php?var1=yes&var2=baorongabc&var3=12345" method="get"> 单行文本框first的html代码: <input type="text" name="first" > 单行文本框idname的html代码: <input type="text" name="idname"> 单行文本框password的html代码: <input type="text" name="password"> 标准按钮html代码: <input type="reset" name="Reset" value="Reset"> <input type="submit" name="Submit" value="Submit"> 隐含式: 通过表单递交的post方式,此方式浏览器会等待server来读取数据,传送的数据量没有限制,数据不会出现地址栏上具有安全性。 只要把程序1中method="get"改成method="post",即: <form name="form1" method="post" action=" http://jada/ clubmember_enrol_perform.php "> 如果把程序1中<from>标签中改成如下代码: <form name="form1" action="mytest_perform.php?var1=yes&var2=baorongabc&var3=12345" method="post"> 在按提交按钮后 那么在mytest_perform.php页面中可接收到六个变量的值,如下表(变量表2)。 变量名:first idname password var1 var2 var3 值: yes baorongabc 12345 yes baorongabc 12345 ―――――――――――表 变量表2―――――――――――――――――――――― 表单与地址栏的结合使用是很有用一种编程手段,我以后在具体例子会讲到。 其次 哪些变量会传到目的页面,这些变量的值是什么以及如何接收? 从上面对页面间值传递方式的阐述,我想大家的那些变量可传到下一页应该有些了解了吧。总结起来可分为表单的内容和跟随在网页地址后面的参数这两大类,他们都会传到目的页面。 不管在表单中对象名和网页地址后面的变量参数名相同那么传递到接收页面值是一个对象变量的值和变量参数值,其他变量值被覆盖。最终是哪一个变量的值,在同一个表单中对象名相同那么上一个对象的值被后面同名对象值覆盖。其他如何覆盖情况请读者自己去试验。 请大家注意,表单对象变量的值只有在通过按钮提交到目的页面才会传递,如在同一页面中有其他超连和表单提交同时存在,而你是通过按超连转到目的页面,那么这个页面是不会接收到表单对象变量的。 由于表单的对象值传递比较复杂,而网页地址后面的参数传递是比较简单。 我重点介绍一下表单的对象值的传递的问题: 表单中的对象有;按钮(标准按钮,图形按钮),文本框(单行文本框,多行文本框),单选按钮,复选框,多行文本框,下拉菜单(可复选的和不可复选),隐含字段。
复选框html代码: <input type="checkbox" name="checkbox" value="c"> 单选按钮html代码: <input type="radio" name="radiobutton" value="r"> 不可复选下拉菜单html代码: <select name="select"> <option value="s1">s1</option> <option value="s2">s2</option> </select> 可复选下拉菜单html代码: <select name="list" multiple size="3"> <option value="sz1" selected>s1</option> <option value="sz2">s2</option> <option value="sz3">s3</option> </select> 隐藏字段html代码: <input type="hidden" name="hiddenField" value="h"> 超连html代码: <a href="mytest_perform.php">连接</a> 标准按钮html代码: 重新还原标准按钮:<input type="reset" name="Reset" value="Reset"> 提交标准按钮: <input type="submit" name="Submit" value="Submit"> 一般标准按钮: <input type="button" name="button" value="Button"> 按钮式图片html代码: <input type="image" name="image" border=0 src="image_mytest/1.gif" width="90" height="29"> 图片式按钮html代码: 提交图片式按钮: <button type="Submit" name="Submit" > <img src="image_mytest/2.gif" width="84" height="28"> </button> 重新还原图片式按钮: <button type="reset" name="Submit" > <img src="image_mytest/2.gif" width="84" height="28"> </button> 一般图片式按钮: <button type="button" name="Submit" > <img src="image_mytest/2.gif" width="84" height="28"> </button> ―――――――――――――――程序代码2――――――――――――――― 最后 讲讲如何接收对于变量的问题 由于在每个编程语言的不同,所以书写格式会有所不同。但基本上是相似的,即在表单对象值的传递中,接收的变量名是name=后面的字符:值是value=后面的字符。下面我讲一下php和asp两种编程语言的书写方式: 在asp中变量名的接收:request("变量名") receive_idname = request("idname") asp中的request对象
在php中变量名的接收:$ 变量名
下面对表单中具体对象取值进行讲述: 文本框:值是输入的文本框的值或初值。 复选框,单选按钮:如果选中,值是value=后面的字符,在表单提交时未选,值为空。 下拉菜单:值是选中<option value="s1">中value=后面的字符。 标准按钮: 有三种类型:submit按钮,reset按钮,none按钮 只有按submit按钮才会提交,reset按钮使表单还原初始状态,none按钮不做任何处理,其实它可作为用于编程操作。如果在同一表单中有多个submit按钮,只会传递按下那个submit按钮对象变量的值。 以上对象变量值的接收比较简单,下面介绍一些特殊对象: 按钮式图片:代码如下: <input type="image" name="image" border=0 src="b1.gif" width="82" height="22"> 按下图片按钮时是把鼠标光标的x,y坐标值都返回web服务器. 值: 鼠标光标在图片的x,y值。 在asp中可以如此接收此类变量: receive_imagex = request("image.x") receive_imagey = request("image.y") 在php中“.”是字符串连接符号,就不能用上面这种变量名书写方式,应写成如下方式: receive_imagex =$image_x receive_imagey =$image_y 随便说一下: 在asp中字符串连接符号是“&”或“+” 而且只能是连接字符串,在php中“.”是字符串连接符号,它可以连接型如:echo $idname."bb"; (asp) (php) 图片式按钮: 提交按钮:代码如下: <button type="Submit" name="Submit" > <img src="image_mytest/2.gif" width="84" height="28"> </button> 重新还原按钮:代码如下: <button type="reset" name="Submit" > <img src="image_mytest/2.gif" width="84" height="28"> </button> 一般按钮:代码如下: <button type="button" name="变量名" > <img src="image_mytest/2.gif" width="84" height="28"> </button> 也是提交按钮才会提交,各按钮的功能与标准按钮相同,不重复叙述。 但注意接收页面接收“变量名”提交按钮的值是 “<img src="image_mytest/2.gif" width="84" height="28">”这与器表单对象很是不同。 复选下拉框: 还有要讲的是:对于复选下拉框的变量接收在asp和php中是有所不同。 在表单的复选下拉菜单,html代码如下: <select name="list" multiple size="3"> <option value="sz1" selected>s1</option> <option value="sz2">s2</option> <option value="sz3">s3</option> </select> 如果选择多个选项怎样接收每个变量: 例如:在表单递交时选择是s1和s3选项 在asp中的实现方法: Rlist=request("list")接收到数据为:sz1, sz3,两项之间以“,及空格”分隔。 把两项分开的程序如下: Rlist=request("list") CRlist=Splist(list, ",") For I=0 to Ubound(CRlist) Next 在php中如何实现: 只要把<select name="list" multiple size="3"> 改为: <select name="list[]" multiple size="3"> 我在php中,写出如下代码: echo "list[0]="; echo $list[0]."<br>"; echo "list[2]="; echo $list[2]."<br>"; 结果: list[0]=sz1 list[2]=sz3 讲了这么多希望读者对网页编程中页面之间值的传递接收问题有初步印象,以后有机会可以通过实例来具体说明这些问题。并在其中介绍一些使用技巧:如一些隐藏字段的应用,显现式和隐含式两种方式结合使用,传递值的动态变化等等。敬请关注!
|