AJAX 通过制作自定义HTTP库使用AJAX获取请求

AJAX 通过制作自定义HTTP库使用AJAX获取请求

我们将学习如何通过制作自定义HTTP库,使用AJAX进行获取请求。

在开始教程之前,让我们先了解一下Get请求和AJAX。Get请求是用来从API(应用程序编程接口)中获得或获取数据的。AJAX是异步JavaScript和XML的缩写。AJAX允许我们在不重载网页的情况下加载或更新新数据。

例如,如果你曾经使用过ReactJs,它可以在不重新加载网页的情况下更新数据。如果我们在数据更新时重新加载网页,会给用户带来不好的体验。让我们以Twitter为例。它更新喜欢和转发的数量而不需要重新加载网页。假设每当任何一条推特获得喜欢时,都要重新加载网页;这可能是一种糟糕的用户体验。

在JavaScript中,一般来说,开发者使用fetch()或Axios()模块来进行获取请求。在本教程中,我们将制作我们的HTTP库来进行Get请求。

语法和算法

第1步 - 创建CustomHTTPLibrary函数,并使用XMLHTTPRequest方法初始化新的XML HTTP请求。

this.http = new XMLHttpRequest();

第2步 - 在CustomHTTPLibrary()函数的原型中加入GetRequest。同时,用该函数初始化GetRequest。

customHTTPLibrary.prototype.GetRequest = function (basURL, callBackFunction) {
   // code to manage the GET request
}

在上述语法中,baseURL是获取数据的URL,而callBackFunction是执行成功响应或错误的函数。

第3步 - 在GetRequest函数中,在HTTP加载时调用箭头函数。

this.http.onload = () => {
}

第4步 - 在onload函数中,检查响应的状态。如果响应状态为200,说明数据获取成功,并以响应的方式调用回调函数。如果响应状态代码不是200,则意味着存在一些错误,并以错误调用回调函数。

if (selfScope.http.status === 200) {
   // call the callback  function with a response
} else {
// call the callback function with the error
}

第5步 - 最后,我们需要发送http请求。

this.http.send();

第6步 - 我们的自定义HTTP库已经准备好了,可以发出一个Get请求。现在,我们需要使用该库。

第7步 - 创建一个CustomHTTPLibrary函数的新实例。

const httpLibrary = new customHTTPLibrary;

第8步 - 现在,使用httpLibrary对象从API发出一个获取请求。

httpLibrary.GetRequest(URL,
(error, data) => {
   // handle error and data
});

在上述语法中,URL是用来获取数据的API。

例子

在下面的例子中,我们创建了一个自定义的HTTP库来使用AJAX进行获取请求。首先,我们创建了HTTP库,然后通过初始化该库的实例来使用它。

另外,用户可以看一下我们从API得到的响应中管理错误和数据的代码。

<html>
<body>
   <h2>Making the <i>custom HTTP library</i> to Make a Get request using AJAX.</h2>
   <div id = "output"> </div>
   <script>
      let output = document.getElementById('output');

      function customHTTPLibrary() {

         // Initialising new XMLHttpRequest method
         this.http = new XMLHttpRequest();
      }

      // Make an HTTP GET Request
      customHTTPLibrary.prototype.GetRequest = function (basURL, callBackFunction) {
         this.http.open('GET', basURL, true);

         let selfScope = this;

         this.http.onload = () => {

            if (selfScope.http.status === 200) {

               callBackFunction(null, selfScope.http.responseText);
            } else {

               callBackFunction('Error in fetching the data : ' + selfScope.http.status);
            }
         }

         // At last, send the request
         this.http.send();
      }

      // Instantiating easyHTTP
      const httpLibrary = new customHTTPLibrary;

      httpLibrary.GetRequest('https://api.publicapis.org/entries',
      (error, data) => {
         if (error) {
            console.log(err);
         } else {
            data = JSON.parse(data);
            for (let item of data.entries) {
               output.innerHTML += data;
            }
         }
      });

   </script>
</body>
</html>

我们学会了通过定制的HTTP库,使用AJAX做一个获取请求。此外,用户还可以通过定制的HTTP库,尝试使用AJAX进行POST请求。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程