使用原生JS的AJAX读取json全过程
首先ajax(async javascript and xml)是用于前端与后端文件比如xml或者json之间的交互。他是一种异步加载技术,意味着你点击某个加载事件是再也不用刷新整个页面,而是发送局部请求,局部回应。由于AJAX不是完全前端,需要用到服务器,所以在做实验的时候必须把html文件和xml或json放到服务器部署的目录之中,在这里我使用的是TOMCAT 7X。
首先编辑一个简单的JSON文件,并命名为json.json,如下:
[{
"key":"value"
}
]
- function showJson(){
- var test;
- if(window.XMLHttpRequest){
- test = new XMLHttpRequest();
- }else if(window.ActiveXObject){
- test = new window.ActiveXObject();
- }else{
- alert("请升级至最新版本的浏览器");
- }
- if(test !=null){
- test.open("GET","json.json",true);
- test.send(null);
- test.onreadystatechange=function(){
- if(test.readyState==4&&test.status==200){
- var obj = JSON.parse(test.responseText);
- for (var name in obj){
- alert(obj[name].key);
- }
- }
- };
- }
- }
- window.onload=function(){
- showJson();
- };</span>
1、使用AJAX,我们必须new一个XMLHttpRequest()的实例,在IE低版本浏览器中是ActiveXObject()。使用if语句判断即可。
2、通过判断readyState的交互状态以及status的交互状态来触发onreadystatechange事件。
这里展开介绍一下readyState的4种取值情况:
(1)值为0:请求还没有初始化,意思是还没有开始open();
(2)值为1:请求已经初始化了但是还没有发送,意思是还没有send();
(3)值为2:请求已经发送了,后台正在处理。
(4)值为3:请求还在处理,但是部分数据可以用了,具体什么意思我现在也不是很明白。
(5)值为4:后台服务器相应完毕,也就是你现在随时可以取得请求的数据。
但是当readyState==4时我们只能知道服务器响应完毕,但还不知道服务器有没有找到我们请求的那个文件,这时就要引用status了。
这里展开介绍一下status的几种常见取值情况:
(1)200:找到了请求的文件。
(2)404:找不到请求的文件。
(3)500:服务器出错。
在同时满足了readySate==4以及status==200时我们就可以得到我们想要的value了。
3、服务器返回的值是存在responseText对象里面的。这时我们可以使用JSON.parse()来取得里面的数据。
4、我们现在把JSON文件里的一整块数据都取了出来,但如果想取到其中的某一个块值比如说:value,就必须用到遍历,比如说for循环。这里的for循环我使用了另一种形式for(var name in obj),这里的意思是取得对象的值,存放在变量name里面。因为JSON文件的结构就是由很多对象组成的。
5、如果是使用“GET”,则send()里面的值为null。如果是POST,则需要传具体的参数比如:send(name);
最后写给刚接触AJAX的同学。如何运行这段代码(配置AJAX环境)。
(1)首先你需要下载一个服务器,我建议是TOMCAT。
(2)然后把包含有你html和json文件部署(黏贴)到Tomcat根目录下的webapps文件夹里。
(3)回到Tomcat根目录,打开bin文件夹,找到startup.bat。双击打开Tomcat服务器。
(4)打开浏览器,输入http://localhost:8080/检查Tomcat是否打开,如果出现404,有可能是8080端口被占用了,这时候回到Tomcat根目录下打开conf文件夹找到server.xml文件,找到这段代码:Connector port="8080" ,把8080修改成8081或者8082,重新在浏览器中输入http://localhost:8081/看看打开了Tomcat了没。
(5)浏览器中输入你的html文件路径,比如:http://localhost:8080/test/index.html 即可。
使用原生JS的AJAX读取json全过程的更多相关文章
- js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可)
js进阶ajax读取json数据(ajax读取json和读取普通文本,和获取服务器返回数据(链接)都是一样的,在url处放上json文件的地址即可) 一.总结 ajax读取json和读取普通文本,和获 ...
- 原生js实现ajax与jquery的ajax库,及json
这是一篇笔记博客, Ajax: 和服务器进行数据交换(异步) 用js实现复杂的原理:用于发送请求的对象在不同的浏览器中是不同的 同源策略:ajax发送请求的url地址与服务器地址必须是同一域名,协议, ...
- Ajax (Asynchronous javascript xml) 搜索框核心代码(JQuery) Ajax判断用户名存在核心代码 附:原生js的Ajax代码 其中有json的一句话解释
前端 <script type="text/javascript"> $(function(){ $("#tid").keyup(function( ...
- 原生JS实现Ajax及Ajax的跨域请求
前 言 如今,从事前端方面的程序猿们,如果,不懂一些前后台的数据交互方面的知识的话,估计都不太好意思说自己是程序猿.当然,如今有着许多的框架,都有相对应的前后台数据交互的方法. ...
- 用原生js实现ajax、jsonp
转载: http://www.cnblogs.com/yangheng/p/6065910.html 一.原生js实现ajax $.ajax({ url: '', type: 'post', data ...
- 原生JS实现ajax 发送post请求
1. [代码]原生JS实现ajax 发送post请求 <script> var oStr = ''; var postData = {}; var oAjax = null; //post ...
- 原生js写Ajax
//原生js写ajax就像打电话 //打电话分下面4步//1.拿出手机//2.拨号//3.说话//4.挺对方说话 //ajax也分下面4步//1.创建ajax对象//2.连接到服务器//3.发送请求( ...
- Ajax工作原理和原生JS的ajax封装
前言: 之所以用ajax作为博客的开篇,是因为无论从ajax的出现还是从它的作用上来说,ajax对于前端无疑是意义重大的.甚至可以说,是ajax带来了前端这个行业.当然,历史并不能说明当下,曾经的辉煌 ...
- 用原生JS实现AJAX和JSONP
前端开发在需要与后端进行数据交互时,为了方便快捷,都会选择JQuery中封装的AJAX方法,但是有些时候,我们只需要JQuery的AJAX请求方法,而其他的功能用到的很少,这显然是没必要的.其实,原生 ...
随机推荐
- bbed改动undo段状态(ORA-01578)
ZBDBA@orcl11g>select * from zbdba; select * from zbdba * ERROR at line 1: ORA-01578: ORACLE data ...
- [Javascript] JavaScript赋值时的传值与传址
JavaScript中有两种不同数据类型的值,分别是基本数据类型与引用数据类型 基本数据类型包含5类,分别是:Number.String.Boolean.Null.Undefined 引用数据类型包含 ...
- $.getJSON() 未能执行回调函数的缘由
$.getJSON() 方法使用 AJAX 的 HTTP GET 请求获取 JSON 数据. 语法 1 $.getJSON(url,data,success(data,status,xhr)) url ...
- 装饰者模式的学习(c#) EF SaveChanges() 报错(转载) C# 四舍五入 保留两位小数(转载) DataGridView样式生成器使用说明 MSSQL如何将查询结果拼接成字符串 快递查询 C# 通过smtp直接发送邮件 C# 带参访问接口,WebClient方式 C# 发送手机短信 文件 日志 写入 与读取
装饰者模式的学习(c#) 案例转自https://www.cnblogs.com/stonefeng/p/5679638.html //主体基类 using System;using System.C ...
- jquery动态创建form表单
function exportExcel() { var merchantName = $('#merchantName').val(); var merchantNo = $('#merchantN ...
- LeetCode 648. Replace Words (单词替换)
题目标签:HashMap 题目给了我们一个array 的 root, 让我们把sentence 里面得每一个word 去掉它得 successor. 把每一个root 存入hash set,然后遍历s ...
- Batch基本知识
一般情况下,每条命令占据一行: 当然也可以将多条命令用特定符号(如:&:.&&:.|.||等)分隔后写入同一行中: 还有的情况就是像if.for等较高级的命令则要占据几行.几十 ...
- Bootloader - main system - Recovery的三角关系【转】
本文转载自:http://blog.csdn.net/u012719256/article/details/52304273 一.MTD分区: BOOT: boot.img,Linux ...
- vi编辑文件保存后,提示“Can't open file for writing Press ENTER or type command to continue”
在linux上使用vi命令修改或者编辑一个文件内容的时候,最后发现使用<Esc+:+wq!>无法保存退出,却出现,如下提示: E212: Can't open file for writi ...
- Sublime Text3 配置 Lua5.3.5开发环境
所需软件 Sublime Text3 Lua5.3.5 配置过程 解压Lua5.3.5包 官方下载的包内是需要makefile安装的(博主Win10下暂为实现),此处提供自动配置完毕的包:Lua5.3 ...