`

实例学习AJAX-基础1

 
阅读更多
从现在开始,我把自己学习AJAX的一些心得体会写出来。打算以短小的实例为主,用实例来说明问题。对于AJAX的了解肯定是需要不少理论的,这里我就不会多说了,网上有很多资料。一些好的资料,我会以参考或引用的方式给列出来。
好了,首先来看看XML HTTP Request 的用法。看实例:
例1:显示本地文件内容
两个文件: ajax1.html和hello.txt。
ajax1.html
<HTML>
<HEAD>
<TITLE>实例1:XMLHTTP的简单使用 </TITLE>
<script type = "text/javascript">

function HelloAjax(localfile){
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("Get", localfile, false);
xmlhttp.send(null);
alert(xmlhttp.responseText);
}

</script>
</HEAD>
<BODY>
<INPUT TYPE="button" VALUE="实例1" onClick="HelloAjax('hello.txt')">
</BODY>
</HTML>
用记事本新建一个 hello.txt 文件,内容就一句:“ Hello AJAX! ”。
将ajax1.html和hello.txt这两个文件放在同一目录下,在IE浏览器中打开ajax1.htm,点击“实例1”按钮,可以看到如下所示:
例2:获取网页源代码
ajax2.html
<HTML>
<HEAD>
<TITLE>实例2:获取网页源代码 </TITLE>
<script type = "text/javascript">

function getSourceCode(){
var myUrl = document.getElementById("urlInput").value;
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET", myUrl);
xmlhttp.send(null);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
document.getElementById("sourceCode").value = xmlhttp.responseText;
}
}
}

}

</script>
</HEAD>
<BODY>
请输入URL: <INPUT TYPE="text" id="urlInput" value="http://blog.csdn.net/javamxj/" size="40" >
<INPUT TYPE="button" value="查看源代码" onClick="getSourceCode()"></br>
<textArea id="sourceCode" style="width:50%; height:200;"></textArea>
</BODY>
</HTML>
在IE浏览器中打开这个网页,点击“查看源代码”,如果网络正常,应该如下显示。

说明:
为了简单,以上两个例子都只能在IE浏览器中打开,对于FireFox浏览器不适用。
在例1中,ajax1.html中的函数HelloAjax把从hello.txt中的内容用alert方法显示出来,我们所要了解的是它如何做到的。
关键是XML HTTP Request ,有篇经典的文章的可以参考《Using the XML HTTP Request object》,如果不习惯英文,可以看看相关的翻译《 [翻译]使用 XML HTTP Request 对象(2006.1) 》,还有一个中文站点:XMLHttp中文参考,也是比较不错的。
IE中使用ActiveX控件方式创建XmlHttp对象,如var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 如果你使用的是IE6,可以使用XMLHTTP的更高级版本,如 "Msxml2.XMLHTTP.7.0", "Msxml2.XMLHTTP.6.0"等等,版本越高,也许速度更快、性能更好,反正具体如何我不清楚。
而在非IE的浏览器中,是用 new XMLHttpRequest() 来创建一个对象的(据说在IE 7中,XMLHTTP 将作为本地 Javascript 对象,也许也可以这样创建了)。
在创建一个XMLHttp对象后,就可以使用它的open方法了,其参数为 open(http-method, Url, boolAsync, userID, password)。前两个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示:
http-method: HTTP的通信方式,比如GET, HEAD, POST, PUT, DELETE, CONNECT等,常用GET,POST。
url: 接收XML数据的服务器的URL地址。URL可带QueryString
boolAsync: 一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作,默认为 true
userID: 用户ID,用于服务器身份验证
password:用户密码,用于服务器身份验证
例1中,使用的Get方式,获取的url是一个本地文件,使用的是同步方式。注意:一般很少使用同步方式,如果处理的是本地文件且文件不大,也可以使用同步方式,但如果处理的是网络上的文件,网络性能不好的话,看起来就像死机一样。
例2中,使用的还是Get方式,获取的是一个网页文件的源代码,使用的异步方式。
因为使用的是异步方式,浏览器向服务器发出请求后,不必等待服务器的响应。那么在服务器完成请求后,就需要告诉请求者(浏览器)工作已经完成。这种方法的使用就引出了下面这个函数。
“xmlhttp.onreadystatechange=function(){...}”是关键,onreadystatechange 属性的字面上的意思就是状态改变时准备做什么,它将注册一个回调函数,一旦请求完成就会调用该函数。这个函数是在异步方式下使用的,如果采用的同步方式,那么就没有必要使用这个函数了。
再看看如何处理服务器的相应。当xmlhttp的就绪状态等于4,并且Http状态码等于200时,将从服务器中得到的响应以文本方式显示在网页的TextArea中。
readyState的五种状态:
0:请求没有发出(在调用 open() 之前)。
1:请求已经建立但还没有发出(调用 send() 之前)。
2:请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。
3:请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应。
4:响应已完成,可以访问服务器响应并使用它。
一些常见的状态码为:
200 - 服务器成功返回网页
404 - 请求的网页不存在
503 - 服务器超时
注:
由于使用的是Get方式提交数据,可以通过URL本身发送数据,这里send()方法的参数为null或“”,如果使用Post方式提交数据,那么send()方法的参数就是要提交的数据。
编码
现在,hello.txt文件中增加一行汉字,如:“欢迎来到javamxj的Blog”,保存。刷新ajax1.html,然后点击“实例1”按钮,这个时候弹出的窗口中的第二行应该是乱码。用“记事本”打开hello.txt,点击“文件 ->另存为”,注意这时弹出的“另存为”窗口中的文件编码应该是“ANSI”,现在要改变它,选择编码为“Unicode”或“UTF-8”,保存。然后再次点击“实例1”按钮,可以看到汉字已经正确显示出来了。
将ajax2.html中的输入URL改为“http://www.baidu.com”,点击“查看源代码”按钮,可以看到也出现了乱码,注意到:其源代码中含有 <meta http-equiv=Content-Type content="text/html; charset=gb2312">,而 “http://blog.csdn.net/javamxj/”中含有 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ,这两个网页的编码是不同的。因为XMLHTTP默认将响应数据的编码定为UTF-8,所以csdn网站的数据被正确解析了,而百度的数据却不能正确解析。
分享到:
评论

相关推荐

    node-v14.17.3-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    c语言UDP传输系统源码.rar

    c语言UDP传输系统源码.rar

    node-v16.2.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于matlab多目标遗传算法matlab程序.rar

    基于matlab多目标遗传算法matlab程序.rar

    MCSkinn (我的世界)皮肤制作工具

    软件可以给需要制作自己喜爱的MC皮肤的玩家来自己制作皮肤,快来下载吧!

    数据可视化-Pyecharts绘制饼图

    数据可视化-Pyecharts绘制饼图

    操作系统基础知识.zip

    操作系统是计算机系统中至关重要的组成部分,它作为计算机硬件与软件之间的桥梁,负责管理和控制计算机的硬件和软件资源,确保它们得到合理的分配和使用。操作系统不仅影响计算机的性能,还决定了用户界面的友好程度以及计算机系统的安全性和稳定性。因此,深入理解和掌握操作系统的知识对于计算机专业人士来说至关重要。

    欧母龙PLC例程源码小车控制程序

    欧母龙PLC例程源码小车控制程序提取方式是百度网盘分享地址

    么么哒.mp3

    么么哒.mp3

    node-v14.3.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    python修改网站会员登陆密码

    登录密码是一种用于验证用户身份并授权其访问特定系统、应用程序或网站的机制。它是用户在注册或创建账户时自行设置的秘密字符组合,通常与用户名配对使用。登录密码是保护用户隐私和数据安全的重要措施之一。

    node-v13.9.0-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v16.13.0-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v13.10.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    毕业设计 基于Pytorch毕业论文知识图谱(Neo4j)构建平台源码+详细文档+全部数据资料(高分项目).zip

    【资源说明】 毕业设计 基于Pytorch毕业论文知识图谱(Neo4j)构建平台源码+详细文档+全部数据资料(高分项目).zip毕业设计 基于Pytorch毕业论文知识图谱(Neo4j)构建平台源码+详细文档+全部数据资料(高分项目).zip 【备注】 1、该项目是个人高分毕业设计项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过mac/window10/11测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(如软件工程、计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

    机械设计外扇叶金属轴装配step非常好的设计图纸100%好用.zip

    机械设计外扇叶金属轴装配step非常好的设计图纸100%好用.zip

    node-v13.4.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    Maven:构建自动化与项目管理的利器.zip

    Maven作为一款强大的项目管理工具,为开发者提供了自动化构建、依赖管理、项目文档生成等功能。通过掌握Maven的核心概念和基本使用,开发者可以更加高效地管理项目,提高开发效率和质量。同时,Maven的灵活性和可扩展性也使得它能够适应各种复杂的项目需求。因此,无论是初学者还是资深开发者,都应该学习和掌握Maven这一项目管理利器。

    欧母龙PLC例程源码洗涤器电机插管改善

    欧母龙PLC例程源码洗涤器电机插管改善提取方式是百度网盘分享地址

Global site tag (gtag.js) - Google Analytics