仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2641|回复: 20
打印 上一主题 下一主题

[学习教程] ASP网站制作之若何利用Ajax手艺开辟Web使用法式(1)

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:33:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧    在曩昔,因为为了取得新数据而不能不从头加载web页面(或加载其他页面)招致web使用法式开展被限制。固然有其他办法可用(不加载其他页面),然而这些手艺都没有被很好地撑持并且有bug成灾的趋势。在曩昔的几个月里,一个曩昔其实不被普遍撑持的手艺已被愈来愈多的web冲浪者(web surfers??是指阅读器仍是阅读者?)所承受,它给了开辟者更多的自在开辟先辈的web使用法式。这些经由过程javascript来异步获得xml数据的使用法式,被亲热的称为“Ajax使用法式”(Asynchronous javascript and XML applications)。在这篇文章中,我将会注释若何经由过程Ajax来取回一个近程的XML文件并更新一个web page,而且跟着这个系列的持续,我将会商更多的办法,利用ajax手艺将你的web使用法式提拔到一个新的条理.  这第一步就是创立一个带一些数据的XML文件。咱们将这个文件定名为data.xml。它是一个复杂的XML文件,而在一个真实的法式中,它会庞杂很多,但关于咱们的例子来讲,复杂了然是最适合地。
<?xml version="1.0" encoding="UTF-8"?> <root> <data> 这是一些示例数据,它被保留在一个XML文件中,并被javascript取回。 </data> </root>
  如今让咱们创立一个复杂的web页面包括一些示例数据。这个页面将是咱们的js剧本地点,而且这个页面将会让用户们会见柄看到Ajax剧本的运转。咱们把它定名为ajax.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
<html lang="zh" dir="ltr">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>利用ajax开辟web使用法式 - 示例</title>
  </head>
  <body>
    <h1>利用ajax开辟web使用法式</h1>
    <p>这个页面演示了AJAX手艺若何经由过程静态读取一个近程文件来更新一个网页的内容--不需求任何网页的从头加载。注重:这个例子关于制止js的用户来讲没无效果。</p>
    <p id="xmlObj">
    这是一些示例数据,它是这个网页的默许数据 <a href="data.xml"
    title="检查这个XML数据." >检查XML数据.</a>
    </p>
  </body>
</html>
  注重,关于那些没有javascript的用户,咱们直接链接到data.xml文件。关于那些答应运转javascript的用户,函数“ajaxRead”将被运转,这个链接被埋没,其实不会被转向到谁人data.xml文件。函数“ajaxRead”如今还没界说。所以假如你要查验下面的示例代码,你会失掉一个javascript毛病。让咱们持续并界说这个函数(还有其他的),让你可以看到ajax是若何任务的,上面的剧本要放到你的head标签里:
<script type="text/javascript"><!--
function ajaxRead(file){
  var xmlObj = null;
  if(window.XMLHttpRequest){
      xmlObj = new XMLHttpRequest();
  } else if(window.ActiveXObject){
      xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
  } else {
      return;
  }
  xmlObj.onreadystatechange = function(){
    if(xmlObj.readyState == 4){
       updateObj('xmlObj', xmlObj.responseXML.getElementsByTagName('data')[0].firstChild.data);
     }
    }
    xmlObj.open ('GET', file, true);
    xmlObj.send ('');
  }
  function updateObj(obj, data){
   document.getElementById(obj).firstChild.data = data;
  }
  //--></script>
  这堆代码有点多,让咱们一点点的停止。第一个函数叫做“ajaxRead”-也就是咱们在页面的“检查XML数据”链接中挪用的函数,咱们界说了一个“xmlObj”变量-这将作为客户端(用户正在检查的这个web页面)和办事端(web站点自己)之间的两头件。咱们在一个if/else块中界说这个对象:
if(window.XMLHttpRequest){
   xmlObj = new XMLHttpRequest();
} else if(window.ActiveXObject){
   xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
} else {
   return;
}
  这只是一个对分歧对象是不是可用的测试-某些阅读器完成了分歧的XMLHttpRequest对象,所以当咱们界说“xmlObj”作为咱们的XMLHttpRequest对象时,咱们不能不依据阅读器所完成的来界说它。假如没有可用的XMLHttpRequest对象,咱们将履行“return”语句停止这个函数以免剧本毛病。在大局部情形下,这个查验将前往一个XMLHttpRequest对象-这局部代码应当可以在绝大局部的阅读器上任务,除少局部对照老的阅读器的异常情形(它可以任务在ie5.01上,然而在netscape4上会使函数终止)。
  接上去是这些代码块:
xmlObj.onreadystatechange = function(){
  if(xmlObj.readyState == 4){
      updateObj('xmlObj', xmlObj.responseXML.getElementsByTagName('data')[0].firstChild.data);
  }
}
  每次XMLHttpRequest的形态产生变更,事务“onreadystatechange”就会被触发。经由过程利用“xmlObj.onreadystatechange = function(){...}”咱们可以创立一个函数并让它在这个XMLHttpRequest对象的形态每次产生改动的时分立即运转。这里总共有五个形态,由0走到4。
  0 C 还没有初始化(在这个XMLHttpRequest入手下手前)
  1 C 加载(XMLHttpRequest初始化一停止)
  2 C 加载停止(XMLHttpRequest一从办事器上取得一个回应)
  3 C 交互(当XMLHttpRequest对象和办事器毗连中)
  4 C 停止(当XMLHttpRequest原告知它已完成了一切人物并停止运转)
  这第五个形态(数字4)就是咱们可以肯定数据已可用的标记,所以咱们查验这个xmlObj.readyState是不是等于“4”来肯定数据是不是可用,假如是4,咱们运转updateObj函数。这个函数带两个参数:一个以后web页面的元素ID(以后web页面中要更新的元素)和用于填充这个元素的数据。这个函数的运转体例在稍后将更具体地注释。
  咱们的web页面的p元素有一个id“xmlData”,这就是咱们筹办更新的段落。咱们正在获得的数据来自于XML文件,但它有点庞杂。这里是它若何任务的道理。
  xmlObj.responseXML属性是一个DOM对象 - 它很象“document”对象,除它来自近程的XML文件。换句话说,假如你在data.xml中运转剧本,那xmlObj.responseXML就是一个“document”对象。由于咱们晓得这些,咱们可以经由过程“getElementsByTagName”办法获得任何XML节点。数据包括在一个定名为“<data>”的XML节点中,所以咱们的义务很复杂:获得第一个(并且只要这一个)数据节点。因此,xmlObject.responseXML.getElementsByTagName("data")[0]前往XML文件中的第一个<data>节点。
  注重:它前往的是XML节点,而不是节点中的数据-这个数据必需经由过程会见XML节点的属性获得,这就是下一步要说的。
  接上去,获得数据只需求复杂的指定“firstChild.data”(firstChild指向了谁人被<data>节点包括的文本节点,而这个“data”属性则是这个文本节点的实践文本)。
xmlObj.open ('GET', file, true);
xmlObj.send ('');
  这是咱们的ajaxRead函数的最初一个局部。它说了些甚么?嗯,xmlObj的这个“open”办法翻开了一个到办事器(经由过程一个指定的协定,这里指定的是“GET”-你可使用“USE”或其他其余协定)的毗连,去恳求一个文件(在咱们的例子里,变量“file”被作为一个参数赋给ajaxRead函数-data.xml),并且javascript可以同步(false)或异步(true,默许值)的处置恳求。因为这是异步的javascript和XML(AJAX),咱们将利用默许的异步体例-在这个例子中,利用同步体例将不起感化。
  这是咱们函数中的最初一行,它复杂的发送一个空字符串回办事器。假如没有这行,xmlObj的readyState永久不会到4,所以你的页面永久不会更新。这个send办法可以用于作其他工作,但明天我只是用来从办事器上获得数据-其实不发送它-所以在这篇文章中我禁绝备参与任何干于send办法的细节。
function updateObj(obj, data){
  document.getElementById(obj).firstChild.data = data;
}
  如今再略微注释一下updateObj函数:这个函数利用一个新的值来更新以后页面上任何指定的元素。他的第一个参数,“obj”是以后页面中元素的ID-谁人要被更新的对象;它的第二个参数,“data”是用来将谁人将被交换值的对象(“obj”)的内容交换失落。普通来讲,查验一下并肯定以后页面上的确有一个元素的ID是“obj”是对照明智的,但对咱们的剧本的这个隔离级别来讲校验其实不需要。这个函数更新的体例和咱们之前从XML文件的“data”节点获得数据的体例相似-它定位它要更新的元素(这时候候这个元素的ID取代了它的标签名和在页面中的索引)并设置这个元素的第一个子节点(文本节点)的data属性为新的值。假如你需求利用HTML而不是纯文原本更新一个元素,你也能够利用
document.getElementById(obj).innerHTML = data
  这就是全体了
  这个概念很复杂,并且代码也不是很难。你可以从某个中央读取一个文件而且不需求从头加载这个web页面。你有足够的天真性来作各类工作,包含从表单发送数据(不需求从头加载web页面)而且利用一个办事端言语来静态生成XML文件。假如你需求更近一步,记得这个毗连是很有效的-哦,还要记得Google是你伴侣。在别的的文章中,我将注释你若何共同办事端手艺利用AJAX来机关壮大的web使用法式。
  关于作者
  Jonathan Fenocchi(mail:jona#slightlyremarkable.com #换成@)是一个收集开辟者,主攻web设计,客户端剧本,php剧本。
只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天
小女巫 该用户已被删除
沙发
发表于 2015-2-4 02:07:59 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
柔情似水 该用户已被删除
板凳
发表于 2015-2-9 10:45:10 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
谁可相欹 该用户已被删除
地板
发表于 2015-2-24 14:20:08 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
老尸 该用户已被删除
5#
发表于 2015-2-26 13:23:43 | 只看该作者
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
透明 该用户已被删除
6#
发表于 2015-3-4 19:37:58 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
7#
发表于 2015-3-10 13:03:22 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
若天明 该用户已被删除
8#
发表于 2015-3-17 07:34:02 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
小妖女 该用户已被删除
9#
发表于 2015-3-19 23:27:20 | 只看该作者
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
第二个灵魂 该用户已被删除
10#
发表于 2015-3-24 05:21:08 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
海妖 该用户已被删除
11#
发表于 2015-4-1 13:09:10 | 只看该作者
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
愤怒的大鸟 该用户已被删除
12#
发表于 2015-4-5 21:51:09 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
冷月葬花魂 该用户已被删除
13#
发表于 2015-4-6 19:10:00 | 只看该作者
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
因胸联盟 该用户已被删除
14#
发表于 2015-4-7 03:21:17 | 只看该作者
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
只想知道 该用户已被删除
15#
发表于 2015-4-10 10:35:37 | 只看该作者
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
活着的死人 该用户已被删除
16#
发表于 2015-4-16 18:12:30 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
不帅 该用户已被删除
17#
发表于 2015-4-19 01:50:03 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
分手快乐 该用户已被删除
18#
发表于 2015-4-21 19:26:25 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
飘灵儿 该用户已被删除
19#
发表于 2015-4-25 21:18:09 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
简单生活 该用户已被删除
20#
发表于 2015-4-26 16:23:20 | 只看该作者
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 20:52

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表