教你怎么用最原始的ajax发送post请求和get请求

简介: 教你怎么用最原始的ajax发送post请求和get请求

ajax发送post请求和get请求

五:总结&提升

一:前言

最近分配了一个小需求,修改一下官网的静态html网页,将其原有的静态页面,改为后端获取部分数据,进行页面渲染的方式。让其可以进行调用接口,获得接口返回信息,从而可以和后端管理系统相配合,不必每次去服务器上手动修改对应的html文件。


二:具体实现

由于是修改静态网页,本着最快,最简单实现的原则,选择了直接通过ajax进行接口调用。


2.1 什么是ajax

Ajax是一种用于创建动态Web应用程序的技术,它可以在不刷新整个页面的情况下向Web服务器发送请求和接收响应。这使得Web应用程序更加灵活和响应,因为它可以更新部分页面内容,而不需要重新加载整个页面。

Ajax是一种使用JavaScript、XML和HTTP等技术的客户端和服务器端之间进行异步通信的技术。通过使用Ajax,Web应用程序可以异步地从Web服务器获取数据,而不需要刷新整个页面。这使得Web应用程序更加流畅和高效,因为它可以在后台处理数据并更新页面内容,而不会使用户的浏览体验受到影响。

2.2 如何实现通过ajax发送http请求

2.2.1 实现流程

2.2.2 整体代码

下面贴出通过ajax发送http请求的整个实例代码,大家可以重点看 javascript 代码,先对整体的流程有一个了解即可。下面我们会着重的解释此篇代码的重点部分!

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Ajax get 请求</title>
  <head>
  <body>
  <button> 点击发送请求</button>
  <a onclick="onLoad">点击下载</a>
  <script type="text/javascript">
    function onLoad(){
      console.log("调用onload");
      window.open("https://vkceyugu.cdn.bspapp.com/VKCEYUGU-0b98d257-1fd1-45f4-8cc4-8b230ee6cc4a/c66dbd9a-9f91-456b-a2e3-5b9d4039af8a.apk?filename=AR助教机器人v2.2.53.apk")
    }
    //获取button元素
    const btn = document.getElementsByTagName('button')[0];
    btn.onclick = function(){
      // 创建对象
      const xhr = new XMLHttpRequest();
      xhr.responseType="json"
      //初始化
      xhr.open('GET','http://localhost:8000/app-web/AppInfoManage/getAppInfoUrl');
      //发送
      xhr.send();
      //处理返回值
      xhr.onreadystatechange = function(){
        if(xhr.readyState === 4){
          if(xhr.status == '200'){
          console.log("url",xhr.response);
          //手动对数据转化
          let data = xhr.response;
          console.log(data.data);
        }
        }
      }
    }
  </script>
  </body>
</html>

三:重点代码解释

这里发送的是一个get请求,请求的地址是一个我自己使用SpringBoot编写的后端接口。下面说一下里面的重点语句。

3.1 创建XMLHttpRequest对象

// 创建对象
const xhr = new XMLHttpRequest();

这行代码创建了一个名为xhr的新XMLHttpRequest对象。


XMLHttpRequest是浏览器提供的一种用于发送HTTP请求和接收响应的API。

创建一个XMLHttpRequest对象后,可以使用其方法和属性来设置和发送请求,处理响应,以及更新页面内容。


具体来说,可以使用XMLHttpRequest对象的open()方法来指定请求类型(如GET或POST)、请求的URL和是否异步处理请求。


3.2 初始化XMLHttpRequest对象

xhr.open('GET','http://localhost:8000/app-web/AppInfoManage/getAppInfoUrl');

这行代码使用XMLHttpRequest对象的open()方法来设置HTTP请求的类型和URL.第一个参数指定了请求的类型,第二个参数指定了请求的url地址。


注意,open()方法只是设置了HTTP请求的类型和URL,而没有真正发送HTTP请求。

3.3 发送HTTP请求

xhr.send();

调用xhr.send()方法后,浏览器将异步发送请求,并在收到响应时触发XMLHttpRequest对象的onload事件或onreadystatechange事件。

3.4 根据响应进行处理

xhr.onreadystatechange = function(){
        if(xhr.readyState === 4){
          if(xhr.status == '200'){
          console.log("url",xhr.response);
          //手动对数据转化
          let data = xhr.response;
          console.log(data.data);
        }
        }
      }

XMLHttpRequest对象的onreadystatechange事件是用于监听HTTP请求状态变化的事件,该事件会在 XMLHttpRequest 对象发生状态改变时触发。具体来说,当XMLHttpRequest对象的状态发生改变时,会自动调用该事件的回调函数,这个回调函数可以用来检查请求的状态并做出相应的处理。


这里的xhr.readyState ===4 标识的就是XMLHttpRequest对象的状态码,状态码一共有5个状态分别是:

我们这里选择状态为4,也就是调用完全结束的时候,通过判断状态码来获取对应的data数据,获取到我们想要从后端接口内所需要的数据

3.5 请求带参

这就是使用原始的ajax方式发送get请求,并且没有携带任何参数。

如果我们的请求需要携带参数的话,可以考虑下面两个方案


1.将参数拼接在 URL 的后面

xhr.open('GET','http://localhost:8000/app-web/AppInfoManage/getAppInfoUrl?param1=value1&param2=value2');

其中 param1 和 param2 代表参数名,value1 和 value2 代表参数值。多个参数之间用 & 连接。


2.如果需要根据不同情况动态添加参数,可以先将参数保存在一个对象中,然后使用 JavaScript 的 Object.entries() 方法将参数转换为字符串,再拼接在 URL 后面

const params = {param1: value1, param2: value2};
const url = 'http://localhost:8000/app-web/AppInfoManage/getAppInfoUrl?' + 
            Object.entries(params).map(([key, value]) => `${key}=${value}`).join('&');
xhr.open('GET', url);

这里使用了 Object.entries() 将对象转化为二维数组,然后使用 map() 方法将数组中的每个元素转换为 key=value 的形式,最后使用 join(‘&’) 将数组中的元素用 & 连接起来。


四:Post请求

要发送 POST 请求,需要修改 XMLHttpRequest 实例的 open() 方法的第一个参数为 “POST”,并且将参数作为 send() 方法的参数传递。


五:总结&提升

1.该文章主要介绍了如何将静态html页面改为后端获取部分数据,然后通过ajax实现调用接口获得数据,使页面可以进行渲染。

2.其中,通过XMLHttpRequest对象的open()方法设置HTTP请求的类型和URL,

3.使用send()方法异步发送请求,然后通过onreadystatechange 事件处理响应。

4.通过实现该功能,可以避免每次需要手动修改对应的html文件,提高工作效率。


希望大家看完此篇文章能够有所收获,学会使用ajax发送请求。


目录
相关文章
|
8天前
|
JSON 前端开发 JavaScript
axios请求成功而$.ajax却不行排错
axios请求成功而$.ajax却不行排错
13 2
|
22天前
|
前端开发
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
|
2月前
|
前端开发
AJAX发送请求方法封装和请求函数底层刨析以及axios二次封装
AJAX发送请求方法封装和请求函数底层刨析以及axios二次封装
|
3月前
|
XML 前端开发 JavaScript
AJAX get() 和 post() 方法
AJAX(Asynchronous JavaScript and XML)是一种用于创建快速和动态网页的技术,它允许使用 JavaScript 和 XMLHttpRequest 对象在不重新加载整个页面的情况下向服务器发送请求和接收响应。jQuery 提供了几个用于 AJAX 操作的方法,包括 .ajax()、.get() 和 .post()
15 1
|
4月前
|
XML JSON 前端开发
|
4月前
|
前端开发 JavaScript
|
4月前
|
前端开发 JavaScript Python
Django 模板中使用 Ajax POST
Django 模板中使用 Ajax POST
17 0
|
4月前
|
JSON 前端开发 安全
浏览器跨域限制:为什么浏览器不能跨域发送Ajax请求?
浏览器跨域限制:为什么浏览器不能跨域发送Ajax请求?
37 0
|
4月前
|
JSON 前端开发 JavaScript
JavaScript学习 -- ajax方法的POST请求
JavaScript学习 -- ajax方法的POST请求
30 0
|
6月前
|
XML 前端开发 JavaScript
什么是Ajax和jquery
什么是Ajax和jquery
39 0