JavaScript中使用远程脚本


Internet自发源以来,一直使用的是一种具有事务特征的(transaction-like)通信模型。在这种通信模型中,客户端浏览器向服务器发送请求,而服务器则向客户端返回响应,在返回响应时客户端浏览器将加载页面或者重新加载页面。这就是典型的HTTP通信,HTTP协议被设计用来按照“请求/响应”模式进行工作。但是这种无状态的通信模型却给开发人员带来了极大的不便,这不但使得一个Web应用程序需要包含数个页面,并且导致用户的体验变得杂乱而又缺乏连贯性。

在2000年之后,人们开始寻求和发展一些新的Web开发技术,这些新技术既能增强Web用户体验,又能使Web应用程序易于开发和维护。随着新技术在Web上的应用,使得Web应用程序具备了与传统桌面应用程序类似的执行方式和可用性。很快,开发人员去芜存精,使用这些技术为Web应用程序提供了更为丰富的功能。

这个Web开发新技术浪潮的核心正是一种我们熟知的语言:JavaScript,以及在JavaScript中使用远程脚本(remote scripting)的功能。

16.1  什么是远程脚本

本质上,远程脚本技术允许客户端通过JavaScript向服务器发送请求,并接收服务器响应的数据,而无须刷新整个Web页面。Web应用程序开发人员可以使用远程脚本技术来创建一种新的Web应用程序,使得页面仅仅进行局部的刷新,以重新加载所需要的部分新数据,而无须重新加载整个Web页面。这种新型的Web应用程序可以使用户获得连贯和一致的使用体验。

“远程脚本”这个术语具有广泛的含义,JavaScript中有多种技术都可以实现远程脚本。这些技术综合使用框架(frame)或内嵌框架(iframe)技术、在document中动态添加<script/>元素、以及使用JavaScript向服务器发送HTTP请求等技术。在最近几年中,使用JavaScript发送请求的技术受到人们的普遍欢迎。这些新技术仅仅使页面的局部进行刷新,而无须重新加载整个Web页面,远程脚本不但有效地减小了服务器发送给浏览器的数据量,又能使得Web页面的工作方式更像一个传统的桌面应用程序。

16.1.1  远程脚本可以用来干什么

远程脚本的概念为开发人员打开了一道通向高级Web应用开发的大门,使用远程脚本技术,Web程序员可以开发出无论在形式上还是在功能上,都类似于传统桌面应用程序的Web应用。

现在,已经有大量的商业网站充分利用了远程脚本技术的价值。这些网站看起来更像是一个桌面应用程序,而不是一个Web站点,这正是远程脚本技术的魅力所在。

搜索引擎巨头Google为我们提供了两个最著名的Web站点:Google Maps和Google Suggest,这两个Web站点充分发挥了远程脚本技术的威力。

1. Google Maps

Google Maps充分利用了Google Earth所提供的地图信息,并被设计用来和现存的商业地图站点进行竞争。Google Maps(http://maps.google.com)使用了远程脚本技术动态地将地图图像添加到Web页面中。当我们在页面的搜索栏中输入一个地点之后,主页面根本无须重新加载,该地点的地图图像将被动态地加载到页面上的地图区域中。另外,Google Maps还允许用户将地图拖动到一个新的位置,这时该位置的地图信息将被动态地加载到页面上的地图区域中,如图16-1所示。

图  16-1

2. Google Suggest

Google Suggest((http://labs.google.com/suggest/)是Google公司另一个重要的发明,它充分发挥了远程脚本技术的优势。第一眼看去,Google Suggest非常类似一个普通的Google 搜索页面。但是,当你开始在文本框中输入搜索关键字时,它将会显示一个建议项目的下拉列表框,并在下拉列表框中显示与关键字相关的、你可能感兴趣的条目。在建议关键字或者短语的右边,还列出了搜索该条目所返回的记录条数,如图16-2所示。

图  16-2

16.1.2  Ajax

在2005年,Jesse James Garrett写了一篇题为“Ajax: A New Approach to Web Applications(Ajax:Web应用开发的崭新道路)”的文章(该文章的URL为:www.adaptivepath.com/publications/essays/archives/000385.php)。在这篇文章中,Garrett陈述了这样一种观点:Web应用程序与桌面应用程序之间在交互性上的差距将会变得越来越小。他还引用了Google Maps和Google Suggest的例子作为证明。Garrett将这种Web开发的新方法命名为“Asynchronous JavaScript + XML(异步JavaScript+XML)”,简称为Ajax。尽管Ajax这一新术语直到2005年才被创造出来,但是实际上Ajax底层的技术和方法就是远程脚本,远程脚本技术早在Ajax出现之前就已经存在了多年。现在,很多开发人员将远程脚本和Ajax这两个术语视为同一事物。Ajax的所有概念都可以归结为使用远程脚本来实现客户端/浏览器之间的通信。

注意:

实际上,在本章中无论何处提到Ajax这一术语,都可将其视为远程脚本技术。

16.1.3  浏览器支持

Web应用程序总需要在浏览器中运行,因此,Ajax技术与本书中所讨论的所有高级JavaScript概念一样,也受到浏览器功能和特性的限制,而且不同浏览器对Ajax技术的支持也可能有所不同。但幸运的是,Ajax的绝大部分功能和常见形式都受到了以下浏览器的支持:

●       Internet Explorer 5+

●       Firefox 1+

●       Opera 9+

●       Safari 2+

隐藏框架技术是一种常见的Ajax方法,当我们在这些浏览器中使用隐藏框架技术时,各种浏览器之间的代码几乎是完全相同的,这是由于各种浏览器的BOM模型都采用了相同的方式来处理页面中的框架(本章稍后的内容将对此进行介绍)。但是,当我们在这些浏览器中使用了其他形式的Ajax技术时,各浏览器之间代码的差异就将显现出来。



相关阅读:
一个用JSP做的日历
记录oracle数据库库表变动
远程安全使用MySQL GUI工具
Unix/Linux历史和大事记(图)
PHP高级教程(9):PHP错误处理
让Access2007数据库文件自动瘦身
Javascript让媒体通过指定的按钮播放
Apache负载均衡设置方法: mod_proxy
Javascript & DHTML DOM基础和基本API
Oracle表连接的奇怪问题
php中用数组的方法设置cookies
使弱类型的语言JavaScript变强势
PHP4在WinXP下IIS和Apache2服务器上的安装实例
使用静态类实现JSP自定义标签
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 郑州-北京西 郓城-上海 缙云-静海 高台-宣汉 子长-包头东 二道沟-商都 汤阴-呼和浩特东 海伦-王岗 氡泉-仙人桥 中卫-安陆 双城堡-王岗 南京-海宁 蓝村-武昌 株洲西-永福南 贵阳-福州 葫芦岛-淄博 北流-赤壁 老边-清原 铁岭西-本溪 漯河西-福州 彰武-唐山 益阳-惠州 遵义-介休 郑州-缙云 银川-商丘 苍南-诏安 许昌-邓州 淮南-梁山 六盘水-任丘 长发屯-八虎力 渭南-北京 阳新-枝江北 扶余-吴堡 泰来-唐山 瑞金-绍兴北 赶水-上饶 贵阳-徐水 双城堡-通辽 福州-陆丰 蓝村-吕梁 泉州-铜陵北 涵江-深圳坪山 新民-天义 杭州东-阳春 哈尔滨东-塔河 青州市-三门峡南 开封-亳州 灵宝-葫芦岛 衡山西-宜兴 清涧县-任丘 羊尾哨-杨林 宝龙山-新立屯 天津西-孝感北 哈尔滨东-林口 伊拉哈-塔河 永城北-贵阳北 牡丹江-泗水 开通-连山关 新邱-赤峰 许昌东-沈阳 桐梓-文地 普兰店-通辽 乌鲁木齐南-杨陵 广元-沭阳 锦州-安阳 衢州-苏州北 阳曲-太原东 翠岗-加南 成都-赣州 徐州-黄村 锦州-田家沟 正定机场-太原南 麻尾-六盘水 湘潭-古田 青龙山-金华 滁州-福州 滦县-大营镇 叶柏寿-承德 八仙筒-兰棱 水地-羊场 各星座查询 阳历1991年4月7日19点2分 女 四川成都
从安徽合肥到深圳坐飞机要多少小时啊
求大清真寺中文导游词,是中文,不是英文
晋城锦华商务大厦怎么坐车
西安到神木的列车火车
qq仙侠传我要到洛川道接44级的任务,但是一到洛川道那张图就
为什么中国政府对韩国索要中国领土不放屁连这种杂碎都骑到
清远去佛山禅城东方广场的详细路线(客车到哪个站下比较近,
韵达快递查运单号怎么查不到1200131609521
从成都到吉安有列车火车或飞机直达的吗
常熟有什么好玩的地方?
南京到张家界动车票价钱数多少
惠州市到清远市有多长距离 走哪条线路比较近 车程几个钟?
吉林到哈尔滨的动车什么时候开始运行
我要从成都做列车火车去胶州,在网上收了半天也不清楚,请知道的
通辽到长春驾车怎么走,好走么?
急求常德或长沙到茂名的火车列车问题
2009年1月有南昌到揭阳的火车列车吗
想从绍兴出门去旅游有什么好地方推荐,请朋友们告诉我啊
郑州有没有国际饭店到陈寨或者北站的夜班公交
从南京列车火车站到句容江苏女子劳教所开车怎么走详细谢谢@
烟台到广州坐火车列车怎样走又快又省?
蓬莱到长岛之间怎么走啊
请问从海口美兰机场到万宁市万城镇怎么走?
2010保定教师资格证什么时候开始报名
四川省温江区到龙泉驿区怎么赶车
有知道南阳到福州的火车列车是几点发车的车票要多少钱
哪位知道桂林去西藏要怎么坐车
郓城到聊城有几点的列车火车
青岛市从辽宁路到南京路金华公寓做几路

Copyright © 2016 phpStudy |