【无标题】

ajax实现数据异步传输

<!DOCTYPE html>
<html lang="en">

<head>
    <meta content="text/html; charset=utf-8">
    <title>AJAX And JSON</title>

</head>

<body>
    <script src="./js/jquery-3.2.1.min.js"></script>
    <script type="application/javascript">
        function load() {
            var url = "http://localhost:3000/data"; // 获取 JSON 数据的链接
            var request;
            if (window.XMLHttpRequest) {
                request = new XMLHttpRequest(); //发送 Ajax 请求,适用于 Chrome, mozilla 等浏览器 
            } else if (window.ActiveXObject) {
                request = new ActiveXObject("Microsoft.XMLHTTP"); // 发送 Ajax 请求,适用于 IE 浏览器 
            }
            request.onreadystatechange = function () {
                if (request.readyState == 4) {
                    var jsonObj = JSON.parse(request.responseText); // 解析 JSON 数据
                    console.log(jsonObj[0]);
                    document.getElementById("title").innerHTML = jsonObj[0].title;
                    document.getElementById("author").innerHTML = jsonObj[0].author;
                    document.getElementById("url").innerHTML = jsonObj[0].url;
                    document.getElementById("catalogue").innerHTML = jsonObj[0].catalogue;
                }
            }
            request.open("GET", url, true);
            request.send();
        }
    </script>
    Title: <span id="title"></span><br />
    Author: <span id="author"></span><br />
    Url: <span id="url"></span><br />
    Catalogue: <span id="catalogue"></span><br />
    <button type="button" onclick="load()">点击加载 JSON 数据</button>
</body>

</html>

```html

readState
XMLHttpRequestXMLHttpRequest.onreadystatechange

语法
XMLHttpRequest.onreadystatechange = callback()

var request = new XMLHttpRequest(),
	method = "GET",
	url="http:asdasdad",
	request.open(method,url,true)
	request.onreadystatechange = fuction(){
	if(request.readyState === XMLHttpRequest.DONE && xhr.status === 200){
	console.log(request.responseTest)
	}
	}
	request.send();
	(1)先定义一个XMLHttpRequest
	(2)使用opern(method,url,true),前提是定义三个参数
	(3)使用onreadystatechange定义回调函数
	②onreadystatechange事件

不要看这一大串这么长,翻译过来就是当前数据源的数据将要发生变化时,就可以理解成监听。
这个事件就是实现异步请求的核心关键。
为什么异步请求可以不用等待响应?
就是因为这儿设置了一个监听事件。
服务器被监听,一旦readyState为4并且status为200,表明响应成功。
这些属性都是怎么来的,w3c文档中就有说明:
readyState和status都对应有不同的数值,只不过4和200表示响应成功。
③绑定提交地址
open()方法,其有三个参数:
method:即请求方式,例子中是GET请求。
url:请求路径,"/getAjaxServlet"。
async:true表示为异步、false表示为同步,不写默认为true。
④发送请求
send()方法,将请求发送到服务器。
同样的道理,这些方法在w3c文档中也有详细说明。
⑤接收响应数据
也就是在②中判断响应成功时,接受响应的数据,有两种属性:
responseText :获取字符串形式的数据。
responseXML:获取XML形式的数据。
如果不是XML数据,都使用responseText。

Json的基础语法
一共有三种数据格式,分别说明:
①对象类型
格式为:{name:value,name:value……}
以键值对的方式存储数据,可以有多个键值对,键值对之间用逗号隔开。
其中name为字符串类型,而value是任意类型。
②数组/集合类型
格式为:[value,value…]
其中value是任意类型。
和数组就很类似,只不过是使用中括号将数据包裹起来的。
③混合类型
即包含对象类型和数组类型。
值得注意的是:
JSON数据的key值:字符串类型,必须加双引号。
JSON数据的value值:任意类型,如果是字符串则必须加双引号。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值