Js实现Ajax

来源:互联网 发布:华彩软件站下载 编辑:程序博客网 时间:2024/06/02 04:01

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如下