Js实现Ajax

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

XMLHTTPRequest对象

所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。
XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

onreadystatechange 事件处理结果

当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。readyState 属性存有 XMLHttpRequest 的状态信息。
下面是 XMLHttpRequest 对象的三个重要的属性:

Access-Control-Allow-Origin

现代浏览器针对跨域请求做了限制,如果请求的是不同主机下的资源,需要在响应首部返回 Access-Control-Allow-Origin字段,表示支持跨域请求.
否则浏览器无法完成Ajax请求.

代码实现


(function () {
    // No 'Access-Control-Allow-Origin' header is present on the requested resource.
    // 浏览器为了安全考虑对跨域请求做了限制, 必须配置Access-Control-Allow-Origin: domain.字段

    const content = document.getElementById('content');
    const btn = document.getElementById('btn');
    const xhr = new XMLHttpRequest();


    btn.onclick = function () {
        // 参数1:连接方法[GET, POST] 参数2:url地址 参数3:是否为异步, true表示异步
        xhr.open('GET', 'http://127.0.0.1:5000/news', true);

        // 发送请求
        xhr.send();
    };

    // 接收返回值
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            if (xhr.status == 200) {
                success(xhr.responseText);
            } else {
                error();
            }
        }
    };

    function success(result) {
        log(result);
        // 使用eval解析json对象,必须加上()
        // JSON互相转化
        var obj = eval('(' + result + ')');
        log(obj);
        content.innerHTML = String(JSON.stringify(obj));
    }

    function error() {
        log('error');
    }
})();


function log(m) {
    console.log(m);
}

点击以后执行的Ajax请求

服务器响应的Header如下

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值