浏览模式: 标准 | 列表2005年10月的文章

网站优化的十大奇招妙技

  1、 选择有效的关键字:

  关键字是描述你的产品及服务的词语,选择适当的关键字是建立一个高排名网站的第一步。选择关键字的一个重要的技巧是选取那些常为人们在搜索时所用到的关键字。

  2、 理解关键字:

  在你收集所需的关键字之前,明白一般人是怎样用关键字是十分重要的。人们在搜索的时候一般是不会使用单个词,而是用短语或者词组。这样对于网站优化起到更重要的作用。

  3、 找出有效的关键字:

  下面的一个网址包括了测试关键字使用频率的工具:http://www.trafficzap.com/ 的 Keyword Generator

  4、 选取关键字技巧:

  A:认真思索

  用笔写下与你的网站或产品有关的所有关键字,先不要对这些关键字进行审评。不要局限于你是卖什么的,尽量站在你客人方面考虑。那些人会为你的网站带来利益,尽量站在这些人的角度想。   B:多问周围人的意见

  讲你的家里人,朋友,同学怎样的词语适合描述你的产品或网站。他们很有可能会找出一些你连想到没想过的词语。

  C:分析日志文档:

  日志文档将会告诉你,人们是使用什么关键字来访问你的网站的。(有些网站在建站的时候会安装相应的工具来生成日志文档供网管参考)

  D:参考其他网站:

  参照那些主题与你相似或相同的网站,看一下他们的meta keyword 是怎么写的。这样你有可能会得到意外的关键字,但是不要直接将人家的模板粘贴过来,因为你不知道网管在设计网站之前对关键字进行了那些可能性的研究。这主要是用于关键字研究。

  E:找出错误的拼写(多用于英文)

  有很多关键字人们会经常拼写错误的,找出这些经常出现错误拼写的词或词组可以为你带来额外的流量。(就GOOLE来说,它有检查拼写错误的功能。建议不要用拼写错误的词、词组作关键字)

  1、 处理关键字:

  到了这一步,你已经收集了很多与你的网站或产品有关的关键字了。接下来的工作就是把收集到的关键字进行组合,把它们组成常用的词组或短语。很多人在搜索的时候会使用两个或三个字组成词。据统计,平均是2.3个字。不要用普通的,单个字作为关键字。这样的关键字很难排到搜索引擎的前十位。例如:你有以下几个关键字:“搜索引擎、软件、提高”,试着把他们组合为“搜索引擎软件”、“搜索引擎提高”等。把字组成关键字短语有利于提高你网站的排名,你将会更有效提高你网站访问量。例如:很少人会用“搜索引擎”或者“软件”。

  2、 舍弃一些关键字: 寻找出那些搜索时很少用到的关键字:

  A:在英文里,在搜索引擎大小写是没有区别的。

  B:拼写错误的关键字是没用的,但是找到一个经常出现拼写错误码的词可以额外地提高你的访问量

  C:去除那些停用的词,在英文里有“the, for , a ,” 等。中文里有“的,地,你,我”等。

  D:没有人会用“最好的”,“疯狂的”等词语进行搜索。如果你的网站里有类似的词,最好把他去除。

  选择最佳关键字:

  如果你按照上述所说,你一定列出了一大堆的关键字。尽管,你已经去除了一些没人使用的。但是对于你来说还是太多了。现在是时候进入关键字优化的最后一步了。

  提示:

  试着用剩余的关键字在搜索引擎中进行搜索,不要把焦点放在最流行的关键字上。有时候,次关键字排名起来还是比较容易的。因为最流行的关键字会存在着更多的竞争对手,而次关键字反之。在选择关键字时的技巧是找出关键字需求与关键字竞争的平衡点,即所选关键字竞争不是很激烈。

  为什么要使用html的meta标签?

  1、

  meta标签是内嵌在你网页中的特殊html标签,包含着你有关于你网页的一些隐藏信息。Meat标签的作用是向搜索引擎解释你的网页是有关哪方面信息的。对于高级的搜索引擎来说,html 的meta 标签并不是什么新奇的东西。但是无论如何它是一个优秀网页不可缺少的。下面我们就它进行一些讲解吧。

  2、

  当你计划搜索引擎优化策略是meta标签是非常重要的。尽管如此,一般的加入meta 并不能帮助你在搜索引擎中获得更好的排名。有好几种meta标签,但重要的有以下几个:description标签, keywords标签, title标签(严格来说title不算是一个标签)。当你不时刷新标签时这几个标签显得特别的重要。如果你希望搜索引擎对你的网站进行索引时就会用到 html标签的重定向(redirect)标签与robots标签.

  注意:调查表只有20%的网页用到“关键字”与“描述”标签(即keyword, description)

  多个关键字用逗号分开。

  3、 title 标签

  title 标签可能是你网页中最重要的标签,它是你网页中最先看到的部分。把它放在description 与 keyword前。在这个标签中最好是加上你网站的关键字,title标签在搜索引擎的搜索中占有非常重要的地位。最好是把它放在其他meta标签前,这更有利于你网站的排名。(注意:有些搜索引擎会按title标签的字母的优先权进行排名,尽量在你的title中使用开始的字母)title标签是人们在搜索引擎中第一个看到有关你网站的描述,所以尽量把它弄得简单、明了。让人一看就知道你的网站是关于什么的。

  4、 Description标签

  Description标签就在title后面,该标签可以是一小段(一个或者两个句子)。用于描述你网站。与title标签一样,这也是人们在搜索引擎列表中链接到你网站的点击。这些描述将鼓动人们去浏览你的网站而不是你竞争对手的。(描述不能太夸张。不然,当访问者到你网站发现内容根本不是你说的那个样子,那么他很快就会退出去。)很多搜索引擎允许描述的字数在150个左右,所以你要保证你的描述在150以下,否则搜索引擎会自动把多余的部分剪去从而造成你网站的描述的不完整。搜索引擎认为描述里的关键字远比网页中的内容要重要(好像现在这种情况不是那么明显了)。真如上所述,这里提供了非常重要的信息:确定你的描述能正确的反映你网站的主题,尽量在描述中加入你主要的关键字,越靠meta的关键字意义越大。这样会突显你的关键字。

  现在大多的搜索引擎(google除外)都会支持descriptin标签。如果你不使用的话你将会失去排名靠前的可能。

  5、keyword 标签

  相比于description与title标签,keyword标签显得并不是那么重要了。有些搜索引擎把它完全地忽略,但是使用下正确的keyword标签对提高排名仍然有效。

  除了搜索引擎外,一般情况下人们是看不到的。keyword标签是一个隐藏的标签,向搜索引擎提供了一组与你的页面有关的的关键字或关键短语列表。你可以用相应的工具找出一系列适用于你网站的关键字。(注意:关键字标签中只能包括与你本页内容相关的关键字列表。所有在这里的关键字必须与页面的内容相联系。)

  提示:在你每一个页面中组织相关的关键字,每个页面必须专注于不同的产品或者内容。在标签中列满关键字对于提高你网站的排名并没有好处。多个关键字间用逗号用隔,逗号表示是逻辑“或”的意思。空格表示逻辑“与”。这是正式在keyword标签中描述关键字必须的。尽管如此,很多搜索引擎也会把关键字间以空格分开以达到能搜索出更相关的结果的目的。这样做的意义是,搜索引擎会把空格分开的关键字根据一定的方式自由组合。可以尝试用两种方法,看哪一种更加适合你。

  关键字不宜以同一形式重复3-6次,一般这已经认为是最大的关键字重复数(好像现在又发生了变化)。所以,尽量避免把你的关键字一次又一次地不断重复。这对于每一个搜索引擎来说是SPAM(关键字垃圾),你会因此而受到惩罚。大多数的搜索引擎会允许你在keyword标签中使用最多1000个字符。通常,对每一个页面使用相关连的关键字会提高你网站的排名。一个很重要的因素是你关键字冗余度,如果你一个关键字是一个字符,而你的keyword 标签中有100个字符,那么你关键字的冗余度就为1%。搜索引擎将会利用相关的算法对你的关键字冗余度进行统计你网页中的每一个重要的词或短语。去除多余的关键字有利于提高你网站的排名。

  基本搜索引擎优化策略:

  为什么有的网站能在搜索引擎上排名很好,而有的却连找到找不到呢?这个秘密何在呢?正如免费搜索引擎上的指导方针所说,有五个因素你是必须铭记于心的:

  1、 你网站的内容与主题。

  2、 每页的关键字数。

  3、 关键字放置的位置。

  4、 点击量。

  5、 链接数量。

  1、 搜索引擎优化策略:网站内容

  网站的实际内容是你网络优化策略的一个重要的因素。如果你想你的网站能在搜索结果中排得靠前,在你的网站中必须有实际的内容。搜索引擎的蜘蛛基本上是一个瞎子。他们只能对你网页内容进行判断你网站的质量,而不能从图片、flash动画上判断。在所有的页面中有充足的内容给搜索引擎进行索引是一个成功搜索引擎优化策略的基本需要。很容易明白,为什么一个没什么内容的网站很难排上去。人们在查找信息的时候,总是希望找到一个包括很多重要信息的网站。很自然,网页内容丰富的网站要比那些网页内容还那么丰富的网站排名要好得多。每个为他们的网站进行优化的站主牢记。不要忘记更新你的网站。无论是搜索引擎还是访问者都希望看到比较新的信息。这是什么意思呢?这就要求你要收集大量的信息,专注于这领域的变化。

  2、搜索引擎优化策略:关键字密度

  网页上通常会有数以百计的词语,那么搜索引擎怎样去分辨哪些是描述你的网站的重要的词语呢?搜索引擎会统计你一个页面的字数。那些重复出现的词或短语被认为比较重要些。搜索引擎利用自身的算法来统计你页面中每个字的重要程度。关键字数与该页面字数的比例称为关键字密度,这是一个搜索引擎优化策略最重要的一个因素。

  为了得到更好的排名,你的关键字必须在页面中出现若干次,或者在搜索引擎允许的范围内。

  怎样才能知道关键字的密度是多少才能得到较好的排名呢?很简单,只要你在搜索引擎中搜索你要优化的关键字,然后统计一下排在前面几个网站该关键字的密度就可以了。当然也有很多统计关键字密度的工具(你可以在本站上找到)。

  3、 索引擎优化策略:突出关键字

  在有价值的地方放置关键字,当你统计完你的页面需要多少个关键字后,接下来就是考虑把你的关键字放在网页的什么地方。突出关键字是吸引搜索引擎注意的一个最重要的因素。搜索引擎将会专注于你网页中某一部分的内容,处于这一关注部分的词语显得比其他部分的词语要重要得多。这就是所谓的“突出关键字”。

  A: Title 和meta 标签:在上一节已经提到,title 标签是网页中最重要的标签。所以在title中放置关键字显得非常重要。有一些搜索引擎会额外的注意“描述”与“关键字”标签。

  B: 标题(headings) -- 标题标签为你的访问者指明了哪些是网站中比较重要的内容。“标题”: 是处于 -- 中的文字。在“标题”标签中能出现关键字对于提高你网站排名有很大的好处。

  C: 超链接文本: 你链接到一个网页与你网站内容相关,这一想法是非常正常的事。这也是关键字在链接文本中为什么那么重要。

  D: URL文本:在你的域名和你的网页中出现关键字对于搜索引擎排名会产生很大的影响。这样的关键字被称为“URL文本”,在另一个网站与你网站建立链接时,尽量使用关键字作为链接文字,这有利于提高你网站的重要性,从而影响到PR。

  E: 顶部:网页顶部的文本,每段开头的内容显得特别重要,所以,尽量在这些地方把关键字包含进来。

  4、 点击流行度

  另外一个在某些搜索引擎中影响排名的因素是点击流行度,在搜索结果中点击连接到你网页的次数会被统计。经常被点击的页面的点击流行度就较高。当访问者从搜索结果中点击你的网站时,搜索引擎将来给你网站奖励一定的分数。如果你的网站得到较高的点击量,那么你将来得到比那些点击量较低的网站更多的分数。不要尝试去重复点击你的网站,对于同一IP的重复点击,搜索引擎会将其删除。当再次重登陆到搜索引擎时会大大影响到排名。搜索引擎会认为这是一个无价值的页面。这并不是一个好的优化策略。

  5、 链接流行度

  链接流行度被认为是搜索引擎优化的一个主要因素。搜索引擎会认为外部链接较多的网站重要性也相对较高。不是所有的链接都是公平的,从高质量网站的链出会给你网站更多的分数。链接文字必须包含有你优化的关键字,这样也会提高你网站的排名。链接流行度并不是在你所能控制的范围,但是你可以按照以下的做法来提高链接流行度:

  A:做一个高质量的网站,如果人们发现他有有价值的内容,他们会主动的与你进行链接。

  B:使交换链接变得更简易。在交换链接页面放置交换链接代码,把交换链接的联系方式放在显眼的地方,方便伙伴与你交换。

  C:在搜索引擎中找出你竞争对手的链接伙伴,要求他们与你进行交换链接。互利的交换链接对双方都是有利的。

  D:在重要的网站中做广告或者在收费目录中提交你的网站。

  当然,你还可以向很多免费目录、黄页等提交。你还可以在你的作品中加上你的链接(如ebook ,发表的文章等)。

   门户页面—你的秘密武器

  管理员建立一个门户门户页面只有一个目的:使某些关键字或短语在某些搜索引擎上获得更好的排名。假设你走进了一家pizza餐厅,肯定有很多人来你的餐厅,但是不是所以的人都要同一口味的pizza。搜索引擎的工作原理也是一样的,他们不是都喜欢同一个页面的。

  有些时候你的网站在某个搜索引擎获得了较好的排名,但是在其他的搜索引擎中却找不到。所以是时候去建立一些门户页面去适应多个搜索引擎的“口味”。

  如果搜索引擎发现你的门户页面适合他的口味,你网站的排名将会提高。

  1、 垃圾与门户页面

  在过去,门户页面只是由几个关键字或者几幅图片组成,没有实际、有价值的内容。然后直接链到主站。人们喜欢使用一些软件自动生成多个门户页面,然后自动向众多搜索引擎提交,结果排名却反而更后了。

  那么门户页面对于网站排名真的起到了积极的作用了吗?有一些人还在不断的争论,这样的门户页面对某些搜索引擎来说仍然是有用的。低质量的门户页面没有实际工资的内容,会被搜索引擎认为是垃圾。

  2、 对搜索引擎友好的门户页面的组建

  如果使用得当的话,门户页面不会被搜索引擎误认为是垃圾。如果能建立高质量的门户页面,这对于提高网站排名会起到一个非常积极的作用。如果要用门户页面来提高你网站排名,你的门户页面必须给访问者提供足够多的信息、图片和链接。正如你的主站一样。

  一个好的门户页面应该像正式的页面一样,只不过是根据特定的搜索引擎而设计。以下这几是要切记:

  A、 没有必要对每一个搜索引擎建立相对的门户页面。把你的注意力放在那些对你网站没有什么好感的搜索引擎上(当然,如果所有的搜索引擎都不喜欢,那么你就 没有必要去建立门户页面,而是做好你的主站)

  B、 不要向主要的目录提交你的门户页面,因为这些目录只允许收录你的主站页面。否则,你将会得到惩罚。

  C、 在你建立门户页面前,你必须对所针对的搜擎引擎有比较深的了解。

  D、 有效的门户页面,只会用到1-2个关键字。如果用得太多,那么这样会导致相反的效果。把注意力尽量集中在你想优化的几个关键字上。

  E、 把门户页面建得尽量普通(即与正常的页面一样,不要让人一看就知道这是一个门户页面)通常情况下是用300-500个

  搜索引擎垃圾技术是利用不道德的技巧去提高自己搜索引擎上的排名。不诚实的网站管理员就是利用这样的手段去欺骗搜索引擎从而获得较高的排名。这样的做法会让你的网站在短期内排名得到提高,但是后果却是十分严重的。有可能导致搜索引擎把你的网站从他的数据库里永久删除!以下是九个经常使用到的搜索引擎垃圾技术:

  1、 隐藏文本:利用文本与背景色的相同来达到隐藏关键字的目的。这样,用户是看不到这样字,不影响用户的正常阅读,但是搜索引擎却一目了然。这是一种最常用的搜索引擎垃圾技术。

  2、 重复关键字:经常与隐藏文本一起使用。但是这种做法会不页面的底部不断的以小号字重复关键字,或者把它隐藏在meta标签里面。这是最流行的搜索引擎垃圾技术。

  3、使用无关关键字:从不在他们的网站中使用一些热门的关键字,而是使用一些与他们网站无关的关键字。这样,有些人用这些冷门的关键字进行搜索时就会找到他的网站。但是这样做是完全没有用的,当访问者发现这个网站不是他们想要的内容的时候,他们就会立即离开。这样做既欺骗了搜索引擎也欺骗了访问者。

  4、 隐藏标签:把关键字隐藏在html标签里面,如:style tags ,alt tags 等等。隐藏链接对一些搜索引擎来说也会被认为是搜索引擎垃圾技术,但另外一些则不是这样。

  5、 相同或相似页面:不要复制页面(或门户页面),或者给这些相同页面不同的名字然后又提交到搜索引擎中。这是搜索引擎跟分类目录都明显反对的。

  6、 页面交换技术:这是对搜索引擎访问时采用一个页面以提高在搜索引擎上的排名,而面对访问者的时候却采用另外一个页面。这样做也会在一时半刻得到不错的网站排名,但是后果是:一旦搜索引擎发现了,你的网站将会在他的数据库中永远除名。

  7、 链接搜索引擎垃圾技术:搜索引擎会认为那些通过自助链接系统建立的链接为搜索引擎垃圾技术。

  8、 无内容:网站没有专一的内容对于搜索者来说是垃圾网站。不合法的内容、复制的内容和那些全都是友情链接的网页,对于搜索引擎来说也是搜索引擎垃圾技术。

  9、 过度提交:每个搜索引擎都会限定一个网站提交网页的数量与提交的频率。在一个月之内不要向同一个搜索引擎提交多于一次(即只能提交一次),也不能向同一搜索引擎在一天之内提交多个页面。切记不要向他们提交门户页面。一定要根据搜索引擎的指导方针行事。

一个论坛凭什么能留住人

一个论坛、一个版块能留住会员的因素是多方面的,但是其中很重要的一点就是对版块的经营观念,有一些版主认为要想留住会员必需得发一些有吸引力的帖子才行。所以有些版主在论坛兴建的初期拼命写作,绞尽脑汁要码出一些好文章来,或者是到别的网站、论坛寻找一些精彩的帖子转帖过来,事实证明这样做版块上文章帖了一大堆人气的提升效果并不明显,这到底是为什么呢?

  会员来到论坛的目的无非有三:

  1.发表自己对生活、对社会、对工作的一些看法,渴望和别人交流。

  2.倾诉自己情感的得失、发泄现实生活中的愤懑、表达自己在生活中的感受。

  3.展示自己的能力、寻找知音和共鸣、体验在虚拟世界中成功的快感。

  从上面三点上来看会员们来论坛不是被动的欣赏,而是要主动的交流和互动。

  说白了,版主要确立的经营观念不是你来欣赏我,而是我要欣赏你。

  如果会员要欣赏好文章就无需来论坛了,各大网站、著名的网上书屋、文学专题网站上的热点新闻、好帖子、经典名著多如牛毛。论坛上文章的精彩程度无论如何都不能与之相比。

  论坛上最主要的功能、最有魅力之处是交流互动,在论坛兴建的初期版主贴出几篇象样的文章来吸引会员是对的,但是当已经有会员注册时注意力应该转到对会员帖子的回复上来,在论坛上任何一个发帖子的人都渴望别人对自己所发帖子的关注,不论是赞美、批评或是讨论都能吸引会员再次回过头来。(当然版主不要对会员高高在上的指指点点,这样会令会员反感。)发帖子的人最郁闷的是自己发出的帖子没人理会,因为任何一个人所发出的主题帖子(跟帖灌水除外)都是经过一番考虑的,有些主题帖子耗费了作者大量的心血和时间。有句话说得好:对别人最大的藐视就是不屑。自己发出的帖子没人理睬比挨了几“砖头”还落寞失望。

  作为一个好的版主一定要控制住展示自己主题写作能力的欲望,版主不是不能发主题帖子,而是要适度,不能发得太多,要把重点放在对会员帖子上的回复上来。版主虽然不是什么行政干部,但是他(她)引导着自己所管理板块的发帖风格,在某些论坛的有些版主很习惯于带头发主题,会员们为了使自己不被淹没,也都跟着大量发主题而不愿回复。这就形成了版块上马拉松式的发帖风格,大家都只管发帖互不理睬,有些帖子根本就没人翻看过。时间长了会员们就会失去热情,论坛也就冷落了下来。

  所以,作为一个版主要做好的最基本的工作,是回复每一位会员新发的帖子。引导自己的版块形成互动交流的风格。

  当然,搞好一个论坛、版块认真回复每一位会员的帖子只是最基本的要求。一个论坛要体现它独到的魅力,成为网上的一个模范论坛还有许多的工作要做。

手把手教你在ASP中使用SQL语句

[idea] [idea] 五花八门的SQL产品多得要命,或许你早顾不得其它甩开袖子就动手干了。但你要同时采用ASP和SQL的话就可能会头晕。MySQL、SQL Server和mSQL都是绝佳的SQL工具,可惜,在ASP的环境下你却用不着它们来创建实用的SQL语句。不过,你可以利用自己掌握的Access知识以及相应的Access技能,再加上我们的提示和技巧,相信一定能成功地在你的ASP网页中加入SQL。

1. SELECT 语句

在SQL的世界里,最最基础的操作就是SELECT 语句了。在数据库工具下直接采用SQL的时候很多人都会熟悉下面的操作: SELECT what FROM whichTable WHERE criteria

执行以上语句就会创建一个存放其结果的查询。

而在ASP页面文件上,你也可以采用以上的一般语法,不过情况稍微不同,ASP编程的时候,SELECT 语句的内容要作为字符串赋给一个变量: SQL = "SELECT what FROM whichTable WHERE criteria"

好了,明白了ASP下SQL“说话”的方式,接下来如法炮制即可,只要满足你的需要,传统的SQL查询模式和条件查询都能派用场。

举例说明,不妨假设你的数据库内有个数据表,名字是Products ,现在你想取出这个表里的全部记录。然后你就编写了下面的代码: SQL ="SELECT * FROM Products"

以上代码——SQL语句的作用就是取出表内的全部数据——执行后将会选出数据表内的全部记录。不过,要是只想从表内取出某个特定列,比如p_name。那就不能用 * 通配符了,这里得键入具体某列的名字,代码如下: SQL ="SELECT p_name FROM Products"

执行以上查询之后Products 表内、p_name 列的内容就会全被选取出来。

2. 用WHERE子句设置查询条件

有的时候取出全部数据库记录也许正好满足你的要求,不过,在大多数情况下我们通常只需得到部分记录。这样一来该如何设计查询呢?当然会更费点脑筋了,何况本文也存心不想让你去用那个什么劳什子的recordset。

举个例子,假如你只打算取出p_name 记录,而且这些记录的名字必须以字母w打头,那么你就要用到下面的WHERE 子句了: SQL ="SELECT p_name FROM Products WHERE p_name LIKE 'W%'"

WHERE 关键词的后面跟着用来过滤数据的条件,有了这些条件的帮助,只有满足一定标准的数据才会被查询出来。在以上的例子里,查询的结果只会得到名字以w 打头的p_name 记录。

以上例子中,百分比符号(%)的含义是指示查询返回所有w 字母打头而且后面是任何数据甚至没有数据的记录条目。所以,在执行以上查询的时候, west 和 willow 就会从Products 表内被选取出来并存放在查询里。

就像你看到的那样,只要仔细地设计SELECT 语句,你就可以限制recordset 中返回的信息量,多琢磨琢磨总能满足你的要求。

这些啊还不过是掌握SQL用途刚起步。为了帮助你逐步掌握复杂的SELECT 语句用法,下面就让我们再来看一下关键的标准术语:比较运算符,这些玩意都是你在构筑自己的SELECT 字符串来获得特定数据时要经常用到的。

WHERE子句基础 在开始创建WHERE 子句的时候,最简单的方式是采用标准的比较符号,它们是 < 、 <= 、 > 、 >= 、<> 和 =。显然,你很快就能明白以下代码的含义和具体运行结果: SELECT * FROM Products WHERE p_price >= 199.95 SELECT * FROM Products WHERE p_price <> 19.95 SELECT * FROM Products WHERE p_version = '4'

注意: 这里你会注意到,最后一个例句中的数字4周围加了单引号。原因是这样的,在这个例子中的 '4' 是文本类型而非数字类型。因为你会把 SELECT 语句放到引号中来把它作为一个值赋给变量,所以你也可以在语句中采用引号。

比较运算符

比较运算符指定从表内取出数据的内容范围。你可以用它们来创建过滤器以便缩小recordset的范围,促使其只保存给定任务下你关心的信息。

3. LIKE 、 NOT LIKE和 BETWEEN

你已经在上面取出w打头记录的例子中看到了LIKE的用法。LIKE判定词是一个非常有用的符号。不过,在很多情况下用了它可能会带给你太多的数据,所以在用到它之前最好先开动脑筋多想想自己到底想获得什么数据。假设你想取出5位数字的SKU号码,而且其开头是1结尾是5,那么你可以用下划符(_)代替%符号: SQL = "SELECT * FROM Products WHERE p_sku LIKE '1___5'"

下划符表示任意一个字符。所以在输入“1 _ _ _ 5”的情况下,你的搜索就会限制在满足特定模式的5位数范围内了。

假如你想反其道而行之,要找出所有不匹配“1_ _ _ 5”模式的SKU条目。那么你只需要在刚才语句例子中的LIKE前面加上NOT就可以了。

BETWEEN 假设你想取出一定范围内的数据,而且你事先知道范围的起点和终点,那么你不妨采用BETWEEN 判断词。现在就让我们假设你想选取给定表内范围在 1和 10之间的记录。你可以如下使用BETWEEN: …WHERE ID BETWEEN 1 AND 10

或者你也可以采用已经熟悉的数学判断字句: …WHERE ID >= 1 AND ID >= 10

4. 联合语句

我们到目前为止所谈到的SQL语句相对较为简单,如果再能通过标准的recordset循环查询,那么这些语句也能满足一些更复杂的要求。不过,何必非要拘泥在浅尝则止的基础水准之上呢?你完全可以再增加其他一些符号,比如AND、 OR和NOT来完成更强大的功能。

以下面的SQL语句为例: SQL ="SELECT c_firstname, c_lastname, c_email FROM customers WHERE c_email IS NOT NULL AND c_purchase = '1' OR c_purchase = '2' AND c_lastname LIKE 'A%'"

就你目前所掌握的SQL知识,以上的例子也不难解释,不过上面的语句并没有很明白地让你看清条件字句是如何胶合在单一SQL语句中的。

多行语句 在SQL语句不好懂的情况下,你不妨把整个语句分解为多行代码,然后在现有变量基础上逐步增加查询语句的各个组成部分并把它存在同一变量内: SQL = "SELECT c_firstname, c_lastname, c_emailaddress, c_phone" SQL = SQL & " FROM customers" SQL = SQL & " WHERE c_firstname LIKE 'A%' and c_emailaddress NOT NULL" SQL = SQL & " ORDER BY c_lastname, c_firstname" 到了最后一句,SQL变量就包含了以下的完整SELECT 语句: "SELECT c_firstname, c_lastname, c_emailaddress, c_phone FROM customers WHERE c_firstname LIKE 'A%' and c_emailaddress NO NULL ORDER BY c_lastname, c_firstname"

整句照上面分解之后显然好读多了!在进行调试的时候,你或许更乐于多敲几个字符把程序改得更好读些。不过你可要记住了,在封闭引号之前或者在打开引号之后你需要增加空格,这样才能保证字符串连接起来的时候你没有把几个词凑到了一块。 5. 开始执行

在学会了SELECT语句的构造和用途之后你就该学习如何使用它了。在你所掌握的数据库工具下,这可能意味着你得按下某个写着“执行”字样的按钮。在ASP网页上,可以立即执行SQL语句也可以当作存储过程调用。

一旦创建了SQL 语句,你还得设法访问其查询结果。显然,这里的关键就是ASP recordset。在使用非SQL的recordset时,创建recordset的代码通常如下所示: Dim objRec Set objRec = Server.CreateObject ("ADODB.Recordset") objRec.Open "customers", objConn, 0, 1, 2

如果你对ASP比较熟悉以上的代码对你可就不陌生了,你应该知道“customers”表示你打开数据库内一个数据表的名字。

打开recordset 为了充分利用你更为熟悉的SQL技能,你需要调整常规ASP网页上最常采用的recordset: Dim objRec Set objRec = Server.CreateObject ("ADODB.Recordset") objRec.Open SQL, objConn, 0, 1, 2

这里唯一的修改就是在objRec.Open,之后用包含SQL语句的变量代替了要查询的数据表的名称。

这种方法的优点之一是你可以指定游标类型(如以上0, 1 ,2 所示)。

执行SQL 你可以用紧凑的一行代码执行SQL语句来创建recordset。以下是语法: Dim objRec set objRec = objConn.Execute(SQL)

在上例中,你所看到的SQL是你存放自己SQL SELECT 语句的变量。该代码行“运行”SQL语句(或者说对数据库进行查询),选取数据并把数据存放在recordset 内,在上例中就是变量objRec。这种方法的主要缺点是你不能选择自己想采用的游标类型。相反,recordset总是用前向游标打开。

因为游标的缘故,你或许打算熟悉两种创建recordset的方法。直接执行查询节省了键入字符所消耗的时间,但那样的话你就得采用默认的游标了,这样有可能遭遇经常不能正常运行的毛病。不管你具体采用哪种办法,两者之间的最大的差别也不外乎代码精练与否。在不考虑你取得什么字段、你的标准是什么的前提下,也不管你如何存储数据,采用SQL式的recordset 在体积上会比ASP上打开的标准recordset 要小得多,更别提操作起来的简易性了。毕竟,通过过滤数据,你消除了耗费时间的if-then 测试和可能用到的循环。

编写测试用SQL 这里有个技巧,许多专业ASP程序员习惯在测试网页的时候“编写”自己的SQL语句。这样做可以帮助你调试代码,因为你可以从中看到传递给服务器执行的字符串。而你要做的无非是增加Response.WriteyourVariable 在屏幕上显示有关信息。在你把和SQL有关的问题提交给ASP讨论组的时候你就应该附上这些信息。

6. 存储查询

当你的查询相对简单的时候,每次从头开始创建SQL语句也不费什么工夫,不过,复杂的查询就不同了,每次都从头来会产生很多开发错误。因此,一旦让SQL顺利地运行起来,你最好把它们存起来,在需要时再调用它们。这样,哪怕是一个简单查询你都能随时用上存储的查询语句了。

假设你每周都要给团队做一次报告,指出目前存在的业务支持问题,这些数据需要从你的数据库中选取,而且要按照日期选择记录,同时根据你所在团队所采用的支持问题的类别排序。一旦你设计了这一查询,你何必以后每周都重新编写一次呢?不要在你的HTML页面上创建查询,你应该用你的数据库工具创建查询并且保存它。

然后你可以采用ActiveCommand 属性把查询插入到你的ASP网页。头一两回你可能会觉得没啥意思,其实也就几行代码而已: Set objSQ = Server.CreateObject ("ADODB.Command") objSQ.ActiveConnection = "databaseName"

objSQ.CommandText = "storedQueryName" objSQ.CommandType = adCmdStoredProc

set objRec = objSQ.Execute

注意,采用adCmdStoredProc 表示你已经在页面上包含了adovbs.inc 文件。该文件定义了你可以按照名字而非数字进行访问的Access常数。只需要在页面上包含该文件即可(<!--#INCLUDE -->),然后你就可以用adCmdStoredProc 这类名字了。这样,将来你再看到的时候更容易理解以上被存储的查询到底是个什么意思。

7. ORDER BY

从Access数据库中选取记录有件最令人丧气的事情,它们是以怎样的顺序输入到数据库内就按照怎样的顺序出来。就算你在Access环境内采用Sort By来改变记录视图,数据表内的记录顺序也并没有发生改变。

如果你正在使用ASPrecordset在网页上写出记录,那么你或许知道乱纷纷的顺序是多令人痛苦的事。但是你可能不得不经常得面对这一问题,因为并不存在什么简单方便的解决方案。好在ORDER BY 可以简化这一难题。

为了对你的结果排序,只要在SELECT语句末尾加上ORDER BY,然后指定你需要排序的参照列即可。因此,如果你想要根据顾客的姓氏对Customers表排序,那么你可以编写如下的查询语句: SQL = "SELECT c_lastname, c_firstname, c_email FROM Customers ORDER BY c_lastname"

这样,只要你建立了recordset而且开始把结果写到屏幕上,你就会看见数据按照字母顺序排列起来了。

多级排序 其实不仅仅可以在SQL语句中进行一级排序。实际上,在很多情况下,你可能会希望指定两到三级深度的数据排序。假设你有以下数据表,其内容如下所示:

先前采用的单级ORDER BY 排序是按下面的顺序取出数据的: Absurdly Assured absurd@assured.com

Absolutely Assured absolutely@assured.com

Crazed Coder crazy@coder.net

Loosely Fringe loose@fringe.to

Lunatic Fringe lune@fringe.to

Hands On hands@yes.org

显然ORDER BY 起了应有的作用。在实际的表结构下,Absurdly Assured 是最后的条目,但它排在检索结果的最顶端。Hands On记录排最后因为 O 在以上列表中排在字母表最后。显然,Absolutely按照字母表最好排在Absurdly之前。为此,你需要采取第2级ORDER BY 排序标准,参照第2列进行排序: SQL = "SELECT c_lastname, c_firstname, c_email FROM Customers ORDER BY c_lastname, c_firstname"

其结果将首先按照c_lastname 列排序然后按照c_firstname 列排序。假如你的数据表包含的记录比较多,仔细设计排序会令输出结果编排更为合理。

投入使用 如果你同大多数程序员一样喜欢自己动手编代码,沉湎于掌握新技术的狂热之中。何不从ASP的冗长编码中转过头来尝试一下SQL编码呢?下面我们将就ASP编程时常见的问题以及如何在ASP中高效地利用SQL语句做一番探讨。

11. 记录统计

确定数据库内有多少记录,或者确定有多少记录达到了某些标准,这些用ASP完成并非难事。如果你采用了正确的游标类型,你可以用RecordCount 属性获得记录数当然也可以用recordset。但是,有个更简单的办法,这就是在自己的SELECT语句中采用count(*) ,代码如下所示: SQL = "SELECT count(*) FROM Customers"

或者 SQL = "SELECT count(*) FROM Customers WHERE c_lastname LIKE 'A%'"

举例说明,以下代码将选出一些记录以及这些记录的总数: SQL = "SELECT c_firstname, c_lastname, count(*) FROM Customers WHERE c_lastname LIKE 'A%'"

但是你不能实现自己的目的。这里采用的“count”函数其实是一种集合函数,意思是只返回单行信息:回答你提出的问题。对第1个SELECT 语句来说,问题是“在客户表内有多少条记录?”查询返回单一的值作为响应,因此它不能同你常规的查询相组合。假如你希望得到其他数据,你需要采用 RecordCount。

集合函数除了“count”之外还包括AVG、MIN、MAX和SUM等。

12. 连接

任何熟悉SQL和关系数据库的人都遇见过大量的连接类型。最简单的说,连接(join)会把两个表的内容组合到一个虚拟表或者recordset内。假如数据表有效地规一化,或许你会经常从某一个表中选出特定的信息再从另一个表中选出关联信息。这样做就需要简单的“同等连接(equijoin)”。

为了了解实际的连接操作,现在让我们假设在一个数据库内存放了某类软件的相关记录。某个表(Software)包含了软件产品的名称、软件的版本以及其他有关细节:

另一个表(Releases)则存储了软件发布历史的信息,其中包括发布日期和发布状态等(比如测试版、当前版、过时等):

上表中还包含了一个列,内容指向软件表中采用的ID号。所以,通过这种索引软件表的方式,你就知道发布表中software_ID 等于 2的软件是Rome。

你采用连接组合信息,这样就不需要在两个表之间来回折腾了。不过,除了组合信息之外还可以通过连接把有关信息合并。这样,只要发布表内的software_ID 匹配软件表内的ID,你就把匹配信息一起放到一个记录内。

代码如下: SQL = "SELECT * FROM Software, Releases WHERE software.ID = releases.softwareID"

仔细分析以上的语句,首先注意到两个表名列在了FROM的后面。再根据所采用的连接,今后你可能还会发现语法会有所变化(或者连接类型有变),但是以上的语法是最基本的,显示了数据的联合选择方式。这里的WHERE 子句用来比较特定的ID值。在Software 表内,存在ID 列。同样的,Releases 表内则有个software_ID 列。为了明确你在WHERE 子句里要比较的值,你用表名作为前缀,后面还加上了一个点号(.)。

以下是连接选取数据之后的结果:

注意:在创建连接的时候要仔细考虑选出数据的列。以上代码采用 * 通配符是为了让读者关注于SELECT 代码行的其他部分。但是,正如你从上图看到的那样,你无法选出softwareID 列,因为这一列没有作为recordset部分的增加值。它的作用就是为WHERE 子句所用。

网站为什么时快时慢

决定网站的速度有很多因素,我们这里提出主要的四个,具体如下:

1。网络的传输质量 事实上除正常重启外服务器是很少当机的,一年也难得碰上一回。但由于目前国内宽带用户的急剧增长,和不断出现的网络病毒,目前国内的网络并不是很好(相信大家都有感觉),到处都面临着线路切割和扩容。所以会出现部分地区暂时访问很慢甚至不能访问的情况。遇到这样的情况请不要着急,因为你不能访问并不表示人家不能访问,你慢并不表示人家也慢。您可以问问外地的网友,他们如果都正常的话,我们建议您去安心睡一觉,起来以后说不定也就好了。至于睡多少时间,就只能看中国网络的改造效率了:)。如果都打不开,请去 看看有没有什么维护的公告,最后再联系我们解决。

2。服务器的繁忙程度   服务器上运行的网站并不是只有一个,每个网站又有很多的人访问,就是说服务器工作的时候平均都连接着好几千个用户,任何用户对服务器发出请求的时候,服务器都会调用一定的资源来处理用户的请求,一般动网论坛的一次请求大约能占用3%的CPU和100KB的内存,可以想象,当某一瞬间正好有很多的用户同时发出请求,那么服务器自然会忙不过来,这个时候服务器就需要等待有空余资源再来运行用户的请求,用户端就会出现变慢的情况。 所以理论上,服务器上开设的网站越少,整体速度就越快,但不能保证出现暂时的停顿。对于超强型以上的网站,我们会定期转移到独立的服务器,同时控制单服务器的网站数量,超强型以下的网站,我们会根据服务器的负荷来决定单个服务器的网站数量。 当我们发现某个服务器负荷较大,就会采取转移分流的办法,来解决这个问题,一般一个星期左右就能解决。同时也会严格检查占用大量服务器资源的程序和网站,尽快联系站长进行处理。

3。页面本身的因素 用户打开一个页面,服务器处理完程序后会把页面上的内容传给用户。用户接收完所有的数据以后才能完全打开页面。很明显,当然服务器处理程序很慢或者页面上的内容很大的时候,都会影响用户打开页面的速度。   服务器处理程序的时间,就是很多论坛下面显示的页面执行时间,由于这个是体现服务器的运算时间,所以这个时间和用户的上网速度是无关的,就是说用户用MODEM和ADSL上网,这个执行时间应该是一样的。   一般服务器处理程序的时间在1000毫秒以下的时候,用户基本上没任何感觉,因为服务器已经在1000毫秒(1000毫秒=1秒)内处理完所有的内容,剩余的时间都是在传递数据。如果你的页面上涉及的文件很大,比如有1MB的图片在做背景,浏览者和服务器之间,就算能达到100KB/S的速度,他也至少需要10秒钟才能打开这个页面。   所以我们建议页面上尽量不要放置过多、过大的内容。这也是插件版本的论坛速度慢的原因之一,因为插件版用了大量的图片、FLASH对页面进行了美化,同时在页面上增加了很多显示的内容。

4。ACCESS数据库的原因   现在网上绝大多数网站都是ACCESS+ASP的形式,因为ACCESS结构简单容易处理,而且也能满足多数的网站程序要求。   ACCESS是小型数据库,既然是小型就有他根本的局限性,以下几种情况下数据库基本上会吃不消:   1。数据库过大,一般ACCESS数据库达到50M左右的时候性能会急剧下降!   2。网站访问频繁,经常达到100人左右的在线。   3。记录数过多,一般记录数达到10万条左右的时候性能就会急剧下降! (注:以上3条只是我们多年以来的经验结果,并不只绝对值,具体视情况不同浮动较大)

  ACCESS论坛(如动网)大了以后就很容易出现数据库方面的问题,当你的论坛数据库在30M以上,帖子5万左右,在线也在100人左右的时候,你的论坛基本上都在处理数据库上花时间,这个时候很可能就会出现数据库吃不消的情况。   一般症状是所有涉及数据库的页面,突然运行都慢的出奇(执行时间达到5秒以上甚至几十秒),涉及HTML和纯ASP运算的页面都正常,等过一段时间(约 10分钟或更长)以后又突然恢复。这个时候你可以用一般ASP探针测试一下,如果服务器的运算时间正常,而你的帖字量又比较大,就是数据库方面的问题了。

  解决方法: 由于这是ACCESS本身的局限性,所以解决的方法除了减少数据量和更换大型的数据库论坛以外也没什么好办法,也就是现在常说的论坛危机,也是大型的论坛都不是ACCESS的原因。我们推荐以下方法:  1。临时解决办法:定期删除多余的数据、压缩数据库,限制论坛灌水,甚至限制论坛注册。如果是动网论坛,可以使用论坛自带的分表储存功能,会有较好的效果  2。比较长远办法:更换论坛和数据库,一般都采用动网sql商业版本+MSSQL 的方案来解决,不过这个需要比较大的投资。因为mssql2000和 ACCESS相比需要更多的资源,光是占内存上,就可以达到每一个在线1M以上的程度,如果你的SQL论坛有100人在线就会吃掉服务器至少150M以上内存。

Google Web Accelerator重新开放

在关闭了四个月之后,Google的用于加速网页装载速度的Google Web Accelerator页面重新开放了。但是一些网站的管理人员说,这次的修订版仍然处于Beta阶段,并且没有大张旗鼓地发布。 为了加速网页浏览,这款工具自动从用户正在浏览的网页下载链接。这中新的技术叫做"预读取",在Mozillia Firefox的最新版本中也加入了这个功能。 Google Web Accelerator提前进行预读取并缓存网页内容,就像一个代理服务器一样,所以用户就不会遇到由于网站服务器响应慢和不好的网络环境带来的网速慢的问题。Google在北美和欧洲分别放置了服务器集群来确保在浏览时的快速响应。 然而,今年夏天,有用户报告说Google Web Accelerator可能会下载一些正在编辑和删除的内容的链接,更为严重的是,一些在网络论坛的成员在使用这个工具时发现,它们能够下载其他用户以前上网时缓存过的页面,这意味着他们能够看到其他用户的帐户信息和隐私。 网站管理人员被迫使用一个特殊的HTML标签来探测预读取,以阻挡Google Web Accelerator的进入。 接着,Google迅速关闭了Google Web Accelerate 的下载页面,并声称它已经达到了 它的最大用户数量。公司还说它将充分研究网站管理人员所关注的问题,并重申程序仍然处于Beta阶段。 现在,Google Web Accelerator以2.0版的面貌重新出现了,但是网站的管理人员大喊Google由一次违规了.37signals的David Heinemeier Hansson写道,“它(Google Web Accelerator)从最开始就十分邪恶,而这一次它彻底地引起了恐慌”。David Heinemeier Hansson曾经在使用Google Web Accelerator初始版本时遇到了很多问题,后来他自己写了一个网上的程序叫做"Backpack"。 在1.0版本中能够,网站管理人员至少有机会屏蔽Google Web Accelerator,因为Google Web Accelerator把它所接受的查询请求的内容以'X-moz: prefetch' 的标题头标记。但这次Google在发布Google Web Accelerator的2.0版本时有了一个新的变化:标题头已经不见了!也就再没有办法从一个普通的请求中分辨出是否是预读取了,这意味着以后不可能屏蔽掉Google Web Accelerator了。 在Google自己的FAQ页面上,Google说它不会预读取安全网站或URL预读取头并下载任何可能的潜在危险。Google Web Accelerator 只会预读取和缓存不会带来不良影响的链接。 Google Web Accelerator 产品部经理 Othman Laraki 把丢失的标题头归因于软件的一个bug,他还说会很快纠正这个bug,25日晚他们已经做出了一个稳定的版本,26日晚些时候就会向广大用户开放。 但Hansson仍然称这项服务是“邪恶的”,“现在Google Web Accelerator当然还不能证明自己免受责难”,但可以肯定的是,Google这次的举动是在向正确的方向发展。

牛B

唉,今天晚上遇到一点感情问题..在被窝里翻来覆去一个小时,想通了..真是牛B,佩服自己..

下午.

一个慌乱,混沌的下午. 和外面阳光灿烂的样子格格不入.有风,很干燥.

空虚的气氛让人想自杀./

AJAX基础教程

  这篇文章将带您浏览整个AJAX的基本概貌,并展示两个简单的例子让您轻松上路.

  什么是 AJAX?   AJAX (异步 JavaScript 和 XML) 是个新产生的术语,专为描述JavaScript的两项强大性能.这两项性能在多年来一直被网络开发者所忽略,直到最近Gmail, Google suggest和google Maps的横空出世才使人们开始意识到其重要性.

  这两项被忽视的性能是:   无需重新装载整个页面便能向服务器发送请求.   对XML文档的解析和处理.

步骤 1 – "请!" --- 如何发送一个HTTP请求

  为了用JavaScript向服务器发送一个HTTP请求, 需要一个具备这种功能的类实例. 这样的类首先由Internet Explorer以ActiveX对象引入, 被称为XMLHTTP. 后来Mozilla, Safari 和其他浏览器纷纷仿效, 提供了XMLHttpRequest类,它支持微软的ActiveX对象所提供的方法和属性.

  因此, 为了创建一个跨浏览器的这样的类实例(对象), 可以应用如下代码:

引用自
if (window.XMLHttpRequest) { // Mozilla, Safari, ... http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE http_request = new ActiveXObject("Microsoft.XMLHTTP"); }
  (上例对代码做了一定简化,这是为了解释如何创建XMLHTTP类实例. 实际的代码实例可参阅本篇步骤3.)

  如果服务器的响应没有XML mime-type header,某些Mozilla浏览器可能无法正常工作. 为了解决这个问题, 如果服务器响应的header不是text/xml,可以调用其它方法修改该header.

引用自
http_request = new XMLHttpRequest(); http_request.overrideMimeType('text/xml');
  接下来要决定当收到服务器的响应后,需要做什么.这需要告诉HTTP请求对象用哪一个JavaScript函数处理这个响应.可以将对象的onreadystatechange属性设置为要使用的JavaScript的函数名,如下所示:
引用自
http_request.onreadystatechange = nameOfTheFunction;
  注意:在函数名后没有括号,也无需传递参数.另外还有一种方法,可以在扉页(fly)中定义函数及其对响应要采取的行为,如下所示:
引用自
http_request.onreadystatechange = function(){ // do the thing };
  在定义了如何处理响应后,就要发送请求了.可以调用HTTP请求类的open()和send()方法, 如下所示:
引用自
http_request.open('GET', 'http://www.example.org/some.file&#39;, true); http_request.send(null);
  open()的第一个参数是HTTP请求方式 – GET, POST, HEAD 或任何服务器所支持的您想调用的方式. 按照HTTP规范,该参数要大写;否则,某些浏览器(如Firefox)可能无法处理请求.有关HTTP请求方法的详细信息可参考http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html W3C specs   第二个参数是请求页面的URL.由于自身安全特性的限制,该页面不能为第三方域名的页面.同时一定要保证在所有的页面中都使用准确的域名,否则调用open()会得到"permission denied"的错误提示.一个常见的错误是访问站点时使用domain.tld,而当请求页面时,却使用www.domain.tld.   第三个参数设置请求是否为异步模式.如果是TRUE, JavaScript函数将继续执行,而不等待服务器响应.这就是"AJAX"中的"A".   如果第一个参数是"POST",send()方法的参数可以是任何想送给服务器的数据. 这时数据要以字符串的形式送给服务器,如下所示:
引用自
name=value&anothername=othervalue&so=on
步骤 2 – "收到!" --- 处理服务器的响应   当发送请求时,要提供指定处理响应的JavaScript函数名.
引用自
http_request.onreadystatechange = nameOfTheFunction;
  我们来看看这个函数的功能是什么.首先函数会检查请求的状态.如果状态值是4,就意味着一个完整的服务器响应已经收到了,您将可以处理该响应.
引用自
if (http_request.readyState == 4) { // everything is good, the response is received } else { // still not ready }
  readyState的取值如下:   0 (未初始化)   1 (正在装载)   2 (装载完毕)   3 (交互中)   4 (完成)

  接着,函数会检查HTTP服务器响应的状态值. 完整的状态取值可参见 W3C site. 我们着重看值为200 OK的响应.

引用自
if (http_request.status == 200) { // perfect! } else { // there was a problem with the request, // for example the response may be a 404 (Not Found) // or 500 (Internal Server Error) response codes }
  在检查完请求的状态值和响应的HTTP状态值后, 您就可以处理从服务器得到的数据了.有两种方式可以得到这些数据:
引用自
http_request.responseText – 以文本字符串的方式返回服务器的响应 http_request.responseXML – 以XMLDocument对象方式返回响应.处理XMLDocument对象可以用JavaScript DOM函数
步骤 3 – "万事俱备!" - 简单实例

  我们现在将整个过程完整地做一次,发送一个简单的HTTP请求. 我们用JavaScript请求一个HTML文件, test.html, 文件的文本内容为"I'm a test.".然后我们"alert()"test.html文件的内容.

引用自
<script type="text/javascript" language="javascript"> var http_request = false; function makeRequest(url) {

http_request = false;

if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } }

if (!http_request) { alert('Giving up :( Cannot create an XMLHTTP instance'); return false; } http_request.onreadystatechange = alertContents; http_request.open('GET', url, true); http_request.send(null);

}

function alertContents() {

if (http_request.readyState == 4) { if (http_request.status == 200) { alert(http_request.responseText); } else { alert('There was a problem with the request.'); } }

} </script> <span style="cursor: pointer; text-decoration: underline" onclick="makeRequest('test.html')"> Make a request </span>

  本例中:   用户点击浏览器上的"请求"链接;   接着函数makeRequest()将被调用.其参数 – HTML文件test.html在同一目录下;   这样就发起了一个请求.onreadystatechange的执行结果会被传送给alertContents();   alertContents()将检查服务器的响应是否成功地收到,如果是,就会"alert()"test.html文件的内容.

步骤 4 – "X-文档" --- 处理XML响应

  在前面的例子中,当服务器对HTTP请求的响应被收到后,我们会调用请求对象的reponseText属性.该属性包含了test.html文件的内容.现在我们来试试responseXML属性.

  首先,我们新建一个有效的XML文件,后面我们将使用这个文件.该文件(test.xml)源代码如下所示:

引用自
<?xml version="1.0" ?> <root> I'm a test. </root>
  在该脚本中,我们只需修改请求部分:
引用自
... onclick="makeRequest('test.xml')"> ...
  接着,在alertContents()中,我们将alert()的代码alert(http_request.responseText);换成:
引用自
  var xmldoc = http_request.responseXML;   var root_node = xmldoc.getElementsByTagName('root').item(0);   alert(root_node.firstChild.data);
  这里,我们使用了responseXML提供的XMLDocument对象并用DOM方法获取存于XML文件中的内容.