仓酷云
标题:
ASP网站制作之若何利用Ajax手艺开辟Web使用法式(1)
[打印本页]
作者:
再现理想
时间:
2015-2-3 23:33
标题:
ASP网站制作之若何利用Ajax手艺开辟Web使用法式(1)
大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.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
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
作者:
柔情似水
时间:
2015-2-9 10:45
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
作者:
谁可相欹
时间:
2015-2-24 14:20
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
作者:
老尸
时间:
2015-2-26 13:23
我认为比较好的方法是找一些比较经典的例子,每个例子比较集中一种编程思想而设计的。
作者:
透明
时间:
2015-3-4 19:37
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。
作者:
仓酷云
时间:
2015-3-10 13:03
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
作者:
若天明
时间:
2015-3-17 07:34
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
作者:
小妖女
时间:
2015-3-19 23:27
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
作者:
第二个灵魂
时间:
2015-3-24 05:21
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
作者:
海妖
时间:
2015-4-1 13:09
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
作者:
愤怒的大鸟
时间:
2015-4-5 21:51
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
作者:
冷月葬花魂
时间:
2015-4-6 19:10
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
作者:
因胸联盟
时间:
2015-4-7 03:21
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
作者:
只想知道
时间:
2015-4-10 10:35
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
作者:
活着的死人
时间:
2015-4-16 18:12
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
作者:
不帅
时间:
2015-4-19 01:50
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
作者:
分手快乐
时间:
2015-4-21 19:26
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
作者:
飘灵儿
时间:
2015-4-25 21:18
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
作者:
简单生活
时间:
2015-4-26 16:23
还有如何才能在最短的时间内学完?我每天可以有效学习2小时,双休日4小时。
作者:
蒙在股里
时间:
2015-4-27 14:53
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2