通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。 ? 动态
它可以直接对用户的输入做出响应,无须经过Web服务程序。它对用户的响应,是采用以事件驱动的方式进行的。事件(Event)可分为两类,一是用户对浏览器进行的某种操作,比如按下鼠标、移动窗口、选择菜单等,可以视为用户事件;二是系统事件,如时间的时刻变化等。当事件发生后,会向浏览器发送相应的消息(用户消息或系统消息),根据消息,浏览器可能会做出相应的响应,这种响应称为事件驱动,也叫消息驱动。 ? 跨平台
JavaScript代码由浏览器解释执行,与操作环境无关,只要能运行浏览器的计算机,并支持JavaScript的浏览器就可正确执行,从而实现了―编写一次,走遍天下‖的梦想。
实际上JavaScript最杰出之处在于可以用很小的程序做大量的事。无须有高性能的电脑,软件仅需一个字处理软件及一浏览器,无须WEB服务器通道,通过自己的电脑即可完成所有的事情。
JavaScript 和 Java 很类似,但并不一样。Java 是一种比JavaScript 更复杂许多的程序语言,而 JavaScript 则是相当容易了解的语言。许多 Java 的特性在 Java Script 中并不支持。 (3)JavaScript的工作原理 1)JavaScript的工作原理
JavaScript编程可以完成诸如构造动画,动态菜单等使页面更加生动、活泼的任务(实例见洪恩在线:http://www.hongen.com/pc/homepage/javascript/index1.htm),还可以对客户机文件系统、注册表等进行操作,如对文件夹、文件的建立,复制,删除,修改注册表,锁定注册表,锁定浏览器等等,有许多随着网页打开而运行的病毒就是含在网页中的JavaScript程序在作怪。由此可见,JavaScript是控制客户机的精灵。
在B/S程序中,为了均衡负载,减轻服务器的计算负担,凡是不需要服务器程序做的工作,可尽量交给客户端程序(如JavaScript程序)去做。我们用HTML标记构造出用户界面,用户通过界面输入数据,向浏览器请求数据等操作。在用户输入数据,或者是输入完毕,将数据向服务器提交的时候,对数据的检验等任务完全可交给JavaScript程序来完成。本课程主要介绍此类任务的JavaScript编程技术。
通过JavaScript脚本检验FORM数据
JavaScript的工作原理,就是以基于对象和一些面向对象的特征:
? JavaScript通过控制客户机上各种对象的方式,控制客户机,对客户机进行操作。 ? 根据用户或系统事件,做出相应的响应。
第二节 Web客户端基本技术
1.数据传递
(1)客户端向服务器传递数据的方法:POST和GET
浏览器向服务器进行数据传送,若使用FORM,常用的传送数据的方法是GET和POST。
①GET方法通过URL请求来传递用户的输入,形式:URL?var_name1=value1&var_name2=value2,即将表单内各字段名称与其内容,以成对的字符串连接,置于表单ACTION 属性所指的URL 后,如http://211.64.32.2/login.php?name=abc&password=123,数据都会直接显示在 URL上,就像用户点击一个链
PHP讲义 第 21 页 共 91 页
接一样;POST 方法通过 HTTP POST 机制,将表单内各字段名称与其内容放置在 HTML 表头(header)内一起传送给服务器端交由ACTION 属性能所指的程序处理,该程序会通过标准输入(stdin)方式,将表单的数据读出并加以处理。
②通过GET方法提交数据,可能会带来安全性的问题。比如一个登陆页面,当通过GET方法提交数据时,用户名和密码将出现在URL上。如果登陆页面可以被浏览器缓存或其他人可以访问客户的这台机器。那么,别人就可以从浏览器的历史记录中,读取到此客户的账号和密码。所以,在某些情况下,GET方法会带来严重的安全性问题。
③GET方式传输的数据量非常小,一般限制在 2 KB 左右,但是执行效率却比 POST 方法好;而POST 方式传递的数据量相对较大,它是等待服务器来读取数据,不过也有字节限制,这是为了避免对服务器用大量数据进行恶意攻击。使用PHP,默认的POST_MAX_SIZE是2M(通过配置php.ini实现),如果你想利用POST方式上传软件,就需要更改这个值了(我设置为20M仍然能够正确上传文件),但是倘若试图使用GET方式,就没有可能实现这种功能。
建议在FORM中,使用POST方法。
下列情况表明传递数据使用的是GET方法: ? 在地址栏中进行GET请求
在地址栏中使用请求形式:URL?var_name1=value1&var_name2=value2……。
如http://nc.dzu.edu.cn/article/show.php?id=139(其中URL为http://nc.dzu.edu.cn/article/show.php), 作用:向URL所指向的程序文件show.php传递一个变量,变量名为id,变量值为139,该程序将从数据库中取出有关id为139的那条新闻的信息,表示成HTML代码后返回给请求者的浏览器。
在地址栏中进行GET请求的情况
? 单击了一个链接。
【例2-4】通过链接传递数据的HTML标记 2-4.htm源代码:
? 对FORM的METHOD属性,使用GET属性值 (2)小结
从PHP的角度看,浏览器向服务器传递数据:
使用表单对象时,$表单对象名=表单变量。
使用URL?参数名=参数值时,$参数名=查询字符串(querystring)变量。 如【例2-3】中,用户在文本字段textfield中输入的数据,发送到FORM的ACTION指向的服务器程序2-3.php后,2-3.php将接收到表单变量$textfield和该变量内的值。
PHP讲义 第 22 页 共 91 页
当在超链接地址或地址栏采用URL?var_name1=value1&var_name2=value2……形式时,var_name1、var_name2等是查询字符串变量。
另外,一个服务器程序,也称页,对接收到的表单变量或查询字符串变量,都作为页内局部变量处理,本页程序执行完毕,这些变量统统自动释放,所以不能将这些变量传递到另外一个PHP程序中去,即不能跨页传递。就像接力棒比赛中,不能跨人传棒。
既然默认情况下,不能将x.php中的$a传到y.php,要想将x.php中的局部变量$a传到程序y.php,可借助于隐藏域:在x.php中用表单中的隐藏域,临时存储$a的值,然后提交表单到y.php,即可实现向y.php发送数据的目的。
具体做法一般是这样: x.php: …
…
这时,从请求服务的角度来看,x.php就是客户端程序,y.php就是服务器程序了。
2.JavaScript嵌入HTML的方式
与C语言非常相似,但去掉了C语言中有关指针等容易产生的错误,并提供了功能强大的类库。对于已经具备C语言的人来说,学习JavaScript脚本语言是一件非常轻松愉快的事。
JavaScript的脚本包括在HTML中,它成为HTML文档的一部分。与HTML标识相结合,构成了一个功能强大的Internet网上编程语言。
(1)JavaScript嵌入HTML的方法
1)块嵌入:显式的JavaScript脚本块嵌入的方法 JavaScript块:
说明: 通过脚本语言开始标记指明JavaScript脚本源代码块。
通过属性Language =\说明标记中是使用的何种语言,这里是JavaScript语言, 表示在JavaScript中使用的语言。 嵌入的地方:
? 嵌入
…中:在主页和其余部分代码之前装载,从而可使代码的功能更强大; ? 嵌入…中:以实现某些部分动态地创建文档。 下面是将JavaScript脚本块加入Web文档中的例子: 【例2-5】将JavaScript脚本块加入Web文档 2-5.htm源代码:
PHP讲义 第 23 页 共 91 页
在浏览器的窗口中调用2-5.htm,则显示―hello,world‖字串。见图所示。
用JavaScript脚本输出的hello,world
说明:
①document.write()是文档对象的输出函数,其功能是将括号中的字符或变量值输出到窗口; ②document.close()是将输出关闭。
在实际应用中,常常将自定义的JavaScript函数放在
…中,JavaScript脚本块形成这个样子:2)包含文件:为了避免
…中JavaScript脚本块过大导致的网页文档代码过长,还可采取一种形式类似C程序,在头部包含JavaScript代码的做法:
xyz.js中的内容即具体的JavaScript脚本块。 3)隐式的嵌入方式
不进行声明或仅进行简短声明,直接用于事件驱动的处理程序中。 【例2-6】直接用于事件处理代码中的JavaScript脚本 2-6.htm源代码:
PHP讲义 第 24 页 共 91 页
直接用于事件驱动中的JavaScript脚本
显然这种方式对于较短的事件处理JavaScript代码很适用,若这种代码较长,应采取块嵌入或包含文件的方法。
3.客户机对象技术
从JavaScript的工作原理可以看出,为了更好地完成控制操作和做出响应动作,JavaScript编程者必须清楚地了解常用的客户机对象。 (1)对象的基础知识 1)使用对象的什么:使用对象的属性、事件、方法。在JavaScript中,属性,表示对象的性质的值,往往用―对象名.属性名‖的形式引用;事件往往用―on事件名‖来侦测、标识,表示―当……的时候‖;方法是对象发出的动作,往往用―对象名.方法名()”的形式使用。
2)如何获得(引用)对象:一个对象要真正地被使用,可采用以下几种方式获得该对象:
? 引用JavaScript内部对象(常用) ? 引用浏览器对象(常用) ? 创建新对象,然后引用之
即对象使用之前必须存在,要么创建新的对象,要么利用现存的对象。
JavaScript内部对象:JavaScript built-in Object,即JavaScript语言本身的对象,如eval(字符串)——返回字符串表达式中的值。
浏览器对象:如窗口WINDOW,文档DOCUMENT、表单FORM等,它们之间是分层次的树状关系,反映这种关系的模型,称作文档对象模型(DOM:Document Object Model)。
PHP讲义 第 25 页 共 91 页