← 返回首页
Javascript基础教程(三十六)
发表时间:2020-04-01 18:02:24
讲解Javascript的ajax

1.什么是ajax

AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 ajax的特点: - AJAX 不是新的编程语言,而是一种使用现有标准的新方法。 - AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。 - AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

2.ajax执行原理

3.实例

为了帮助您理解 AJAX 的工作原理,我们创建了一个小型的 AJAX 应用程序。 下面的 AJAX 应用程序包含一个 div 和一个按钮。 div 部分用于显示来自服务器的信息。当按钮被点击时,它负责调用名为 loadXMLDoc() 的函数。

<!--ajax.html--->
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
</head>
<body>

<div id="myDiv"><h2>使用 AJAX 修改该文本内容</h2></div>
<button type="button" onclick="loadXMLDoc()">修改内容</button>

<script>
    function loadXMLDoc()
    {
        let xmlhttp;
        if (window.XMLHttpRequest)
        {
            //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
            xmlhttp=new XMLHttpRequest();
        }
        else
        {
            // IE6, IE5 浏览器执行代码
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange=function()
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
            }
        }
        xmlhttp.open("GET","ajax_info.txt",true);
        xmlhttp.send();
    }
</script>
</body>
</html>

在ajax.html同级目录下,创建ajax_info.txt文件。

AJAX 不是新的编程语言,而是一种使用现有标准的新方法。<br>
AJAX 是与服务器交换数据并更新部分网页的技术,在不重新加载整个页面的情况下<br>

运行效果:

4.对原生ajax的简单封装

http.js

function Http() {
    let xmlhttp;
    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    } else {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return {
        request: (url, method, data, success, error) => {
            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState === 4) {
                    if(xmlhttp.status === 200){
                        success(xmlhttp.responseText);
                    }else{
                        error(xmlhttp.responseText);
                    }
                }
            }
            xmlhttp.open(method, url, true);
            if (method === 'GET' || method === 'get') {
                xmlhttp.send();
            } else {
                xmlhttp.setRequestHeader("Content-type", "application/json");
                xmlhttp.send(data);
            }
        }
    }
}

调用方式:

<script src="http.js"></script>
<script>
    let http = new Http();
    http.request('ajax_info.txt', 'GET', null,
        (resp) => {
            console.log(resp)
        },
        (err) => {
            console.log(err)
        });
</script>