关于Ajax实现的简单示例
一、代码示例
关于Ajax的基本概念(包括XMLHttpRequest对象及其相关方法属性)移步这里(w3school中文版)学习了解。
<!doctype html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>使用Ajax异步加载数据</title>
<script type = "text/javascript">
function loaded() {
var xmlhttp = null; //定义一个变量存储XMLHttpRequest对象
//使用try-catch获取XMLHttpRequest对象,XMLHttpRequest对象是实现Ajax的核心基础
try {
xmlhttp = new XMLHttpRequest(); //针对Firefox,chrome,Safari等浏览器
}
catch(e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); //IE浏览器
}
catch(e) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //老式IE浏览器
}
} xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { //当请求已完成,且服务器响应状态就绪时
//alert(xmlhttp.responseText);
document.getElementById("new").innerHTML = xmlhttp.responseText;
//document.getElementById("new").innerText = xmlhttp.responseText;
//使用innerText属性,一直无法得到Ajax的响应字符数据,搞不懂什么原因,目前只能通过innerHTML属性获取输出"example.txt"字符数据
}
}
xmlhttp.open("GET","example.txt",true); //说明请求方式类型,以获取html文档同路径下的一个txt文档数据为例,直接跳过后台脚本交互过程,简单的示例哈~~
xmlhttp.send(); //发送请求
}
window.onload = function(){
loaded();
}
</script>
</head> <body>
<div id = "new">ok,that's shit!!!</div>
<!-- <input type = "button" value = "shit" /> -->
</body>
</html>
二、效果截图

三、结论
虽然理论能看的明白,但还是要多实践、敲代码才是真理!这次虽然是一个简单示例,却没料想因为使用innerText属性无法输出Ajax获取的数据,找了老半天都没发现问题,也不知道原因,只能使用innerHTML属性(其实就是Firefox不支持innerText属性而已,可以使用textContent替代)。主要结论如下:
1、直接在本地硬盘建立一个.txt文档作为Ajax请求的数据源时,chrome、IE浏览器会限制Ajax请求使用的协议。比如请求路径是file://协议从自己硬盘里加载example.txt文件,就会看到"Cross origin requests are onlu supported for HTTP"(跨域请求支持HTTP协议)的错误信息(如图)。Firefox浏览器没有限制。



2、基于Firefox浏览器,使用innerText属性无法输出Ajax获取的txt文档字符数据,而使用innerHTML属性可正常获取输出(写入当前HTML文档中),原因暂不明。
3、至于上述IE、Chrome浏览器不支持本地文件Ajax请求,可使用JQuery的Ajax相关的接口方法,或者使用WebStorm开发工具编写上述代码,即可解决本地测试ajax请求问题。
四、参考资料
- 《JavaScript DOM编程艺术(第2版)》[英]Jeremy Keith [加]Jeffrey Sambells著 杨涛等译,人民邮电出版社. 第115页-第119页
 - Ajax教程
 
关于Ajax实现的简单示例的更多相关文章
- Ajax -- 原理及简单示例
		
1. 什么是Ajax •Ajax被认为是(AsynchronousJavaScript and XML的缩写).现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax. 2. Ajax ...
 - AJAX的简单示例:注册校验
		
众所周知,我们每次需要注册一个网站的用户名时,都会校验该邮箱.用户名是不是正确的格式.是不是有被使用过,密码是否符合规则,二次确认是否符合. 如果这些校验都采用form表单提交的话,会给用户带来极不好 ...
 - Spring MVC  文件上传简单示例(form、ajax方式 )
		
1.Form Upload SpringMVC 中,文件的上传是通过 MultipartResolver 实现的,所以要实现上传,只要注册相应的 MultipartResolver 即可. Multi ...
 - Web API 简单示例
		
一.RESTful和Web API Representational State Transfer (REST) is a software architecture style consisting ...
 - Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
		
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
 - [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
		
本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...
 - SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论   SignalR 简单示例   通过三个DEMO学会SignalR的三种实现方式   SignalR推送框架两个项目永久连接通讯使用  SignalR 集线器简单实例2  用SignalR创建实时永久长连接异步网络应用程序
		
SignalR代理对象异常:Uncaught TypeError: Cannot read property 'client' of undefined 推出的结论 异常汇总:http://www ...
 - Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例
		
前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...
 - Linux下的C Socket编程 -- server端的简单示例
		
Linux下的C Socket编程(三) server端的简单示例 经过前面的client端的学习,我们已经知道了如何创建socket,所以接下来就是去绑定他到具体的一个端口上面去. 绑定socket ...
 
随机推荐
- 断路器Hystrix与Turbine集群监控-Spring Cloud学习第三天(非原创)
			
文章大纲 一.Hystrix基础介绍二.断路器Hystrix简单使用三.自定义Hystrix请求命令四.Hystrix的服务降级与异常处理五.Hystrix的请求缓存与请求合并六.Hystrix仪表盘 ...
 - Java创建和解析Json数据方法(二)——org.json包的使用
			
(二)org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...
 - 用JSONObject解析和处理json数据
			
(一)jar包下载 所需jar包打包下载百度网盘地址:https://pan.baidu.com/s/1c27Uyre (二)常见场景及处理方法 1.解析简单的json字符串: 1 // 简单的jso ...
 - 微信小程序提交 webapi  FormDataCollection
			
/// <returns></returns> [HttpPost] public ShoppingCartModel UpdateCart(FormDataCollectio ...
 - mybatis学习网站
			
http://www.mybatis.org/mybatis-3/zh/index.html
 - OracleCPU使用情况查询
			
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ...
 - python 使用cx-freeze打包程序
			
python环境 3.6.5 win7 linux环境同理 先尝试了PyInstaller ,打包时一直提示 no module named gtk 而gtk 又依赖pygobj ...
 - PS 基础知识 CMYK全称是什么
			
已解决 请问谁知道CMYK四色的英文全称? 悬赏分:20 - 解决时间:2006-9-6 16:23 C代表什么颜色?英文全称是什么? M代表什么颜色?英文全称是什么? Y代表什么颜色?英文全称是什么 ...
 - 用C++设计一个不能被继承的类(转)
			
在Java 中定义了关键字final,被final修饰的类不能被继承. 首先想到的是在C++中,子类的构造函数会自动调用父类的构造函数.同样,子类的析构函数也会自动调用父类的析构函数.要想一个类不能被 ...
 - 广告制胜无它,顺应人性尔——leo鉴书63
			
近期看了几本怎样写文案的书.对广告有了些兴趣.查了下相关销量排行,位置比較高的是本叫<科学的广告+我的广告生涯>的书,是同一作者(Claude C. Hopkins)两本书的合集.前者是他 ...