关闭顶部展开顶部

XMLHttpRequest和AJAX入主Web开发_AJAX教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:如何根据邮编自动完成地址信息
采用一个开源的AJAX库:Ajax Toybox 描述: 在注册或购物车结帐的时候,需要用户填入个人资料,这个环节可以简练一下,我们只需客人填入邮政编码,然后就根据这个邮政编码,自动从数据库中取出相应的省,市等地址信息。这样既可以减少客户的输入,增加客户体

一、 引言

在XMLHttpRequest对象和AJAX给用户和开发者带给巨大好处的同时,也许还有一些问题你没
有考虑到-但是的确到了值得引起每个人注意的时候了。

甚至非常讨厌的人也都喜欢XMLHttpRequest,因为它提供给程序员真正梦想的功能。也正
是因为有了这样的新技术,Web应用软件开始变得具有象桌面应用软件相似的行为。如今,
问题总是象"假定为……"那样地简单,这把幼稚的终端用户从需要了解服务端、客户、回
寄和提交按钮-"提交?提交给什么东西?"-等一系列问题的苦海中解脱出来。

最近,无数可怕的案例爆炸式出现在Web上,它们充分说明为什么远程脚本(或称"AJAX",如
果你喜欢的话)是自从单像素点gif技术以来最伟大的事情。事实上,成串的酷极的、有用的
应用软件正日益增长,象站点Flickr,Google Maps,The WebORB Presentation Server等所
宣传的那样。

这些站点和另外许多地方大肆宣传AJAX的能力。公正地说,这种技术在提高在线操作的质量
方面的确有相当的潜力来。然而,尽管它有许多的优点,但是这个神圣的Web通讯大杯中嗅
起来仍然有一股奇怪的味道;就象摆动在我们面前的啤酒和巧克力,仍有一个邪恶的方面存
在于其中-表面上看起来是多么地纯洁和天真。

这种潜在的邪恶存在于用户熟悉的操作界面背后的重要的功能性差距之中。你们当中许多
人可能已经使用互联网近10年了,并且你知道它怎样工作:你到处点按鼠标,填充表单,
修改你的输入;当做完所有这些,你可以点击提交按钮。你们都了解这些精华经验-它们从
因特网的一代传递到新的一代,如:"不要点按提交按钮两次-否则,表单可能要提交两次"或
"等待稍微长一些时间,它正在处理"或"在你提交了表单后,不要点按'向后'按钮",等等。


但是既然现在AJAX已登堂入室,那么你可以把基本知识抛出窗外。简直是"什么东西都可以
"-突然间出现一种新的可被跟踪的数据-可以在任何时候发送出去,而不需要用户的任何了
解,甚至用户还不了解这竟然是可能发生的。每一次击键,每一个鼠标移动,每一下点按
鼠标,每一次停顿,都能被捕获并发送到Web服务器,而你对此无能为力。

二、 XMLHttpRequest:利与弊

就象许多技术存在利弊一样,产生这种技术的目的是为了利用其优点。直到如今,XMLHtt
pRequest带给人们如此多的优点,诸如不需回滚的输入校验,文本区域的拼写检查以及Gm
ail等等,简直几乎为人们捧之为神圣。基于AJAX技术创建的接口使用起来非常有趣,甚至
编码更有趣味。简直很难令人相信,这样一种神奇的技术竟然能够做错事情。

但是,即使还没有发现存在巨大的安全漏洞,该XMLHttpRequest也有可能因为其外在的优
雅而失败。它很可能会失败在"用户轮廓图"-用于更好的描述之目的-的应用之中。当前,用
户轮廓图帮助Web站主侦探趋势,跟踪网页浏览习惯并帮助消除使用性问题。但是直到现在
,开发人员还只能分析寄回的数据-用户决定让服务器取得的数据并为提交后得到处理而高
兴。

但是通过一种微秒的手段,这种能量平衡会发生易位。通过使用AJAX技术,一个用户的行
为可以被持续地并小心地监控。因为它能被做,所以它将被做;这就带给人们一个相当头疼
的问题,而不仅仅是浪费带宽、成兆的垃圾信息以及更慢的网页装载次数的问题。

设想一下,这里仅是举例说明问题,你把一部新购买的iPod掉到地上去了,结果它停止了
工作。抱着希望得到免费的替换的想法,你发了一封电子邮件给Apple公司的售后服务部,
信中说:"我刚刚买了一个新牌子的iPod。我不小心把它掉到了楼梯上,它突然停止工作了
。"之后,你决定删去第二句以支持你的理由。太晚了!如果该网站使用了AJAX技术,你的
反映可能早就被杀死在了你的抱怨桌前!

或者-一个更恶意破坏性的例子-请考虑这种情况:大多数人都有一个或两个用户名/口令组
合以用于他们的"并不重要"的站点,如新闻站点、博客、论坛等。他们可能还有几个保留
的这种组合以用于更敏感的网站-银行业务,Web邮件和工作帐号等。在一个给定页面中输
入不正确的登录细节是非常普通和极易犯的错误。虽然他们以前形成的习惯的影响应对此
负主要责任,但是在人们点击提交按钮前常常是已经意识到他们所做的事情的。

不幸的是,一个AJAX击键记录程序实现起来相当麻烦。使用如此的一个击键记录程序,就可
以用代码来收集不正确的登录尝试,然后针对一系列"重要的"站点对之进行试验-当然,也
可以使用XMLHttpRequest对象。

三、 "恶意"暗示

公平地说,上面引用的大多数的"恶意"应用软件都能被合理地加以处理,即使在XMLHttpRe
quest技术出现以前。的确,request对象是一种相对于以前的IFrame技术更为优雅的成功
提交表单数据的方法。但是,XMLHttpRequest以一种更为自然的方式工作,这种方式简直
可以能使客户端与服务器端的交互差别逐渐消失。

具有讽刺意味的是,直到最近,随着Firefox Web浏览器的不断流行,才使得较多用户真正
了解到可以由Web客户端储存和控制的信息的深度和广度。随着广泛采用象Greasemonkey
Web开发者扩展以及cookie编辑器这样的工具,人们比以往任何时候更为确信,如果问题发
生在客户端,那么责任一般应归咎于该用户。

但是现在,即使象我们这样狂妄的人也不再只是右击鼠标,看一下源代码,然后就能确信正
在发生的事情了。请考虑下面的OnReadyStateChange JavaScript语句,运行它是为了响应
一个XMLHttpRequest:

xmlReq.onreadystatechange =
{
if( xmlReq.readyState == 4 )
eval( xmlReq.responseText );
}


上面的代码执行包含在来自于XMLHttpRequest的响应中的JavaScript代码。换句话说,有可
能出现这种情况:即使一个页面加载完毕,也有可能在后台再进行添加或修改JavaScript
函数和代码!因此就算你观察该页面代码的源代码-它可能发送了键击或鼠标移动事件到W
eb服务器,你也无法确信你所见的代码是当前执行的唯一代码。把这些特征与一些令人胆战
心惊的困惑结合起来,那么你可以看到,恶意目的与XMLHttpRequest对象相结合,怎么不
能实现Web客户的信息窃取!

四、 还不确信?

你还不感到害怕并因此而愤怒吗?还不准备愤起并删去你的浏览器中的XMLHttpRequest代
码吗?那么,好,也许本文强势的措词论证会吓倒了你;那么在游戏"Fonzie寻宝记"(Th
e Search For 's Treasure。译者注:在GOOGLE中输入这几个关键词,你肯定能找到这个
在线文本游戏,本人没有深入试验。难道这个小东西那么可爱的面孔下竟然埋伏着上面所
述的那么恐怖的……)中-你能够救出Fonzie吗?

通过使用很有艺术的命令行接口,穿过充满文本的门厅寻找丢失的Arthur 'Fonzie' Fonza
relli宝藏。祝你幸运,但是请记住…虽然它看上去就象无危害的客户交互-你每作四次移
动,该游戏通过XMLHttpRequest对象发送一个请求到服务器上并保存你的移动。永远记住
:不要做一个印刷工(Don't make a typo);不要尝试一些愚蠢的东西如"eat jukebox"

;不要在游戏中输入一个用户名和口令字;否则……

 

分享:使用Ajax技术开发Web应用程序
在过去,由于为了获得新数据而不得不重新加载web页面(或者加载其他页面)导致web应用程序发展被限制。虽然有其他方法可用(不加载其他页面),但是这些技术都没有被很好地支持而且有bug成灾的趋向。在过去的几个月里,一个过去并不被广泛支持的技术已经被越

来源:模板无忧//所属分类:AJAX教程/更新时间:2010-04-06
loading.. 评论加载中....
相关AJAX教程
闂備焦鐪归崺鍕垂闁秵鍋ら柡鍥舵緛缂嶆牠鏌涢埄鍐姇闁抽攱甯楅妵鍕即濡も偓娴滄儳顪冮妶蹇曠Ф闁瑰嚖鎷�
婵犵數鍋涢顓熸叏椤撱垹纾婚柟鐐灱濡插牓鏌¢崒婵囩《濠⒀勭⊕娣囧﹪鎳犻澶嗗亾濠靛鐓熼柕蹇婃櫅閻忔煡鏌熼崙銈嗗
婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掑嫷妫戠紒杈╁仜椤撳吋寰勭€n亝顓鹃柣搴f嚀鐎氼厽绔熼崱娆愬床濞戞柧绶氶弻锝夊閳轰胶浼堥梺鐟板殩閹凤拷
婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掑嫷妫戠紒杈╁仜椤撳吋寰勬繝鍕靛悑闂備浇顕栭崹搴ㄥ礋椤撗勑氶梻浣筋嚙闁帮絽岣胯铻炴繛鎴欏灪閸嬪鏌ㄩ悤鍌涘
闂傚倷鑳舵灙缂佺粯鍔欓獮濠冩償閵娿儳鍔﹀銈嗗笒閸婂摜鏁崼鏇炵閻庢稒岣块惌鎺斺偓瑙勬礃缁诲牓寮幘缁樻櫢闁跨噦鎷�
闂傚倷鑳舵灙缂佺粯鍔欓獮濠冩償閵娿儳鍔﹀銈嗗坊閸嬫捇鏌涘顒夊剳缂侇喖锕弫鍌炲礈瑜忛悡鎾绘煟鎼搭垳宀涢柡鍛箞閹苯鈻庨幋鐘碉紳婵炴挻鑹鹃敃銉р偓姘炬嫹
闂傚倷娴囬妴鈧柛瀣尰閵囧嫰寮介妸褉妲堥梺浼欏瘜閸o綁寮诲☉妯锋斀闁归偊浜為懗铏圭磽娴i潧濡芥俊鐐舵椤曪綁濡搁埡濠冩櫖濠电偛妫欓崹鐢电箔閿熺姵鈷戦柛婵嗗閳ь剙顭烽獮濠囧箻閼告娼熼梺璺ㄥ櫐閹凤拷
闂傚倷绀侀幖顐﹀疮閻楀牊鍙忓瀣捣缁€濠傤熆閼搁潧濮堥柣鎿勭秮閹娼幏宀婂妳濠电偛鐪伴崐鏇㈡箒闂佹寧绻傚Λ娆戠矆閳ь剟姊洪崨濞氭垿鎮ч悩鑼殾闁规壆澧楅弲鎼佹煥閻曞倹瀚�
濠电姷顣藉Σ鍛村垂椤忓牆绀堟繝闈涙-閻斿棙淇婇姘倯閻庢氨绮妵鍕箻鐎靛摜鐣洪柣搴㈢啲閹凤拷
婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掑嫷妫戠紒杈╁仜椤撳ジ宕堕妸銉紩婵$偑鍊栭幐鑽ゆ崲閸愵亖鍋撳铏彧濞e洤锕、娑樜旈埀顒佹櫠閸欏绡€妞ゎ偒鍠楃€氾拷
濠电姷顣藉Σ鍛村垂椤忓牆绀堟繝闈涙-閻斿棙鎱ㄥ璇蹭壕閻庤娲﹂崜鐔笺€佸▎鎾崇闁绘挸绨堕崑鎾绘偨閸涘﹦鍘搁梺鍓插亝缁诲嫬鐡┑鐘愁問閸n垶骞忛敓锟�
濠电姷顣藉Σ鍛村垂椤忓牆绀堟繝闈涙-閻斿棙鎱ㄥ璇蹭壕闂佸搫鑻幊姗€宕洪埀顒併亜閹哄棗浜鹃梺瀹狀嚙闁帮綁鐛幋锕€绠涢梻鍫熺⊕椤斿棝姊绘担鍛婃儓閻庢碍鎮傞獮蹇涙晸閿燂拷
濠电姷顣藉Σ鍛村垂椤忓牆绀堟繝闈涙-閻斿棙鎱ㄥ璇蹭壕閻庤娲╃紞渚€鐛€n亖鏀介柛顐亗缁憋拷
婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掑嫷妫戠紒杈╁仜椤撳吋寰勬繝鍕幀闂備胶鎳撻悺銊ф崲閸曨垼鏁傞悗娑櫭肩换鍡樸亜閺嶎煈娈斿褍寮剁换婵嬶綖椤旇棄顏�
闂備浇顕ф鎼佸储濠婂牆绀堟繝闈涱儐閸嬪鏌熼幆鐗堫棄闁活厽顨呴埞鎴︽偐閹绘帗娈梺濂告涧缂嶅﹪寮婚妶澶嬪殟闁靛鍎遍~宥夋⒑缂佹ḿ澹勭紓宥勭閻e嘲鈻庨幘瀛樻闂佽法鍣﹂幏锟�
UB闂傚倷绀佸﹢杈╁垝椤栫偛绀夋俊銈呮噽瀹撲線鏌涢妷銏℃珕閻庢碍宀搁幃妤€鈽夊▍铏灴閿濈偤鏁撻敓锟�
闂傚倷娴囨竟鍫熴仈缁嬫娼栧┑鐘崇閻掗箖鎮楅悽鐢点€婇柛瀣崌閻涱噣宕归鍙ョ棯婵犵數濮崑鎾绘煥閻曞倹瀚�
闂備浇顕ф鍝ョ不瀹ュ鍨傞柛婵嗗閼板潡鏌涢姀銏犳
闂傚倷绀侀幉鈥愁潖缂佹ɑ鍙忓瀣捣缁€濠傤熆鐠鸿櫣鐏遍柛妤佺缁绘盯宕卞Δ鈧銏ゆ煕閻愬樊妲圭紒缁樼〒缁辨瑩鎮╅崫鍕腐闂備胶枪妤犲繘骞忛敓锟�
缂傚倸鍊搁崐鐑芥倿閿曞倹鍋¢柨鏇炲€搁崹鍌涚節婵犲倸顏い鈺呮敱閵囧嫰骞掑鍥舵М缂備焦褰冨﹢閬嶅焵椤掑倸浠柛濠冪箘缁辨挸顫濇0婵囨櫓闂佽法鍣﹂幏锟�
©2017 www.mb5u.com濠电姷顣藉Σ鍛村垂椤忓牆绀堟繝闈涙-閻斿棙鎱ㄥ璇蹭壕閻庢鍣崳锝夊箖閳哄懎绠甸柟鐑樻尭閻︼拷
闂傚倷娴囬妴鈧柛瀣崌閺岀喖顢涘⿰鍐炬毉濡炪們鍎婚幏锟�&闂傚倷绀侀幉锛勬暜閹烘嚦娑㈠籍閸噥妫呴梺璺ㄥ櫐閹凤拷