• 使用原生JS的AJAX读取json全过程


    首先ajax(async javascript and xml)是用于前端与后端文件比如xml或者json之间的交互。他是一种异步加载技术,意味着你点击某个加载事件是再也不用刷新整个页面,而是发送局部请求,局部回应。由于AJAX不是完全前端,需要用到服务器,所以在做实验的时候必须把html文件和xml或json放到服务器部署的目录之中,在这里我使用的是TOMCAT 7X。

    首先编辑一个简单的JSON文件,并命名为json.json,如下:

    [{
      "key":"value"
    }
      ]
    [html] view plain copy
     
    1. function showJson(){  
    2. var test;  
    3. if(window.XMLHttpRequest){  
    4.     test = new XMLHttpRequest();  
    5. }else if(window.ActiveXObject){  
    6.     test = new window.ActiveXObject();  
    7. }else{  
    8.     alert("请升级至最新版本的浏览器");  
    9. }  
    10. if(test !=null){  
    11.     test.open("GET","json.json",true);  
    12.     test.send(null);  
    13.     test.onreadystatechange=function(){  
    14.         if(test.readyState==4&&test.status==200){  
    15.             var obj = JSON.parse(test.responseText);  
    16.             for (var name in obj){  
    17.                 alert(obj[name].key);  
    18.             }  
    19.         }  
    20.     };  
    21.   
    22. }  
    23. }  
    24. window.onload=function(){  
    25.   showJson();  
    26. };</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 即可。

  • 相关阅读:
    假设客车的座位数是9行4列,使用二维数组在控制台应用程序中实现简单的客车售票系统。
    用lua求两个数组的交集、并集和补集。
    Lua 将数组中的某些value设置为nil,打印#数组的长度遇到的问题。
    用Lua编写ACM算法竞赛开灯问题
    EXCEL基础
    微服务的服务粒度该如何权衡
    Linux装cudnn
    How To Install Jenkins on Ubuntu 20.04
    获取heidisql保存的密码
    Spring Framework 远程命令执行漏洞复现(CVE202222965)
  • 原文地址:https://www.cnblogs.com/fightjianxian/p/9069855.html
Copyright © 2020-2023  润新知