前端发送请求的几种方式

一.form表单提交

<h1>form表单的get</h1>
<form action="/adress" method="get">
        <input type="text" name="name">
        <input type="text" name="pswd">
        <input type="submit" value="get">
 </form>
 <h1>form表单的post</h1>
 <form action="/adress" method="post">
        <input type="text" name="name">
        <input type="text" name="pswd">
        <input type="submit" value="post">
  </form>

form表单把表单中的内容提交给后台,如输入框,单选框,复选框,文本域等

  • form表单提交,在后台可通过对应的name属性获取相应的值
  • action属性是用来设置提交的服务器地址
  • method属性是用来设置form表单的提交方式get或post 默认值是get

表单提交的特点:

  • form表单提交后会新建一个页面
  • 每次提交都会刷新页面,没有办法做到页面局部的刷新
  • form表单时浏览器自带的,就算将浏览器的js支持关掉,也可以提交表单

二.原生ajax

简介(来自MDN)

Asynchronous JavaScript + XML(异步 JavaScript 和 XML), 其本身不是一种新技术,而是一个在 2005 年被 Jesse James Garrett 提出的新术语,用来描述一种使用现有技术集合的‘新’方法,包括:HTML 或 XHTML, CSS, JavaScript, DOM, XML (en-US), XSLT, 以及最重要的 XMLHttpRequest。当使用结合了这些技术的 AJAX 模型以后,网页应用能够快速地将增量更新呈现在用户界面上,而不需要重载(刷新)整个页面。这使得程序能够更快地回应用户的操作。

尽管 X 在 Ajax 中代表 XML,但由于JSON的许多优势,比如更加轻量以及作为 Javascript 的一部分,目前 JSON 的使用比 XML 更加普遍。JSON 和 XML 都被用于在 Ajax 模型中打包信息。

简单总结

ajax并不是一种新的技术,是几种技术的结合,ajax无需加载整个页面,就能够更新部分的网页,可以使程序更快回应到用户

示例

    <h1>原生ajax</h1>
    <input type="text" id="userName" value="hehe">
    <button id="getbtn">ajax--get</button>
    <input type="text" id="pswd">
    <button id="postbtn"></button>
    <script>
        let getBtn = document.querySelector('#getbtn');
        let postBtn = document.querySelector('#postbtn');
        let userName = document.querySelector('#userName');
        let pswd = document.querySelector('#pswd');

        // 原生ajax-get
        getBtn.onclick = function () {
            // 1.创建请求对象
            let xhr = new XMLHttpRequest();
            // 2.创立链接
            xhr.open("get", `/login?name=${userName.value}&pswd=${pswd.value}`, true)
            // 3.发送请求
            xhr.send();
            // 4.监听请求状态
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    console.log("ajax-get", xhr.responseText);
                }
            }
        }
        // 原生ajax-post
        postBtn.onclick = function () {
            // 1.创建请求对象
            let xhr = new XMLHttpRequest();
            // 2.创立链接
            xhr.open("post", "/register", true)
            // 3.发送请求
            xhr.send(`name=${userName.value}&pswd=${pswd.value}`);
            // 4.监听请求状态
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    console.log("ajax-post", xhr.responseText);
                }
            }
        }
    </script>

ajax请求的优点

  • ajax在提交,请求,接收时是异步进行的,不会影响页面的其他部分,提升了用户体验

ajax请求的缺点

  • 使用起来步骤繁琐
  • 不支持浏览器back按钮
  • ajax暴露了与服务器交互的细节

三jQuery的ajax

为什么说是jQuery的ajax,jQuery只是将原生ajax封装起来,不必每次重复去写原生ajax,方便了程序员使用,

 $('#getbtn').click(() => {
        $.ajax({
            type: "get",
            url: "/login",
            data: { name: userName.value, pswd: pswd.value },
            // 注意这里是写数据类型,这里要么不写,要么写json
            dataType: "dataType",
            success(response) {
                console.log("get:", response);
            }
        });
    })
    $('#postbtn').click(() => {
        $.ajax({
            type: "post",
            url: "/register",
            data: { name: userName.value, pswd: pswd.value },
            success(response) {
                console.log("post:", response);
            }
        });
    })

jQuery的ajax参数

  • type:请求方式
  • url:请求地址
  • data:发送到服务器的数据
  • dataType:服务器响应的数据类型
  • success(response,status,xhr):成功时候的回调

注意需要引入jQuery使用

四:axios

简介(来自Axios官网)

Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。

示例

   // *****************axios-get

        axios.get("/login", {
            params: { name: userName.value, pswd: pswd.value }
        }).then((response) => {
            // then就相当于success
            console.log("axios-get", response);
        })
 
 
    // *****************axios-post
   
        // post请求  参数直接写{}   不需要外面那层params
        axios.post("/register", { 
            name: userName.value, psw: pswd.value 
        }).then((response) => {
            // then就相当于success
            console.log("axios-post", response);
        }

vue框架的创建者尤雨溪推荐使用axios替换jQuery

  • 原生ajax的配置和调用方式都很繁琐,实现异步请求比较麻烦
  • jQuery的ajax相对于原生ajax是非常好用的,但是没有必须要因为ajax异步网络来引用整个jQuery框架

axios本质上也是对原生ajax的封装,但是他是Promise的实现版本,相较于原生ajax或jQuery的ajax,程序员省去创建Promise对象的过程,符合最新的ES规范,它有以下特征:

  • 同时支持浏览器端和服务端请求
  • 支持promise API
  • 提供了一些并发请求的接口
  • 转换请求返回数据,自动转换为JSON格式

五.fetch

简介(来自MDN)

Fetch API 提供了一个 JavaScript 接口,用于访问和操纵 HTTP 管道的一些具体部分,例如请求和响应。它还提供了一个全局 fetch() 方法,该方法提供了一种简单,合理的方式来跨网络异步获取资源。

这种功能以前是使用 XMLHttpRequest 实现的。Fetch 提供了一个更理想的替代方案,可以很容易地被其他技术使用,例如 Service Workers。Fetch 还提供了专门的逻辑空间来定义其他与 HTTP 相关的概念,例如 CORS 和 HTTP 的扩展。

示例


//发起get请求
fetch(url).then(function(response) {

   //response.status表示响应的http状态码
   if(response.status === 200){
     //json是返回的response提供的一个方法,会把返回的json字符串反序列化成对象,也被包装成一个Promise了
     return response.json();
   }else{
     return {}
  }
});



//fetch post请求
fetch(url, {
    method: 'post',
    body: JSON.stringify(base),
    headers: {
      'Content-Type': 'application/json'
    }
  }).then(function(data) {
 
 
  })

fetch号称是ajax替代品,是ES6出现的,使用了ES6中的promise对象。Fetch是基于promise设计的。Fetch的代码结构比起ajax简单多了,参数有点像jQuery ajax。但是,fetch不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 前端可以使用`fetch()`或`XMLHttpRequest`对象来发送POST请求。以下是使用这两种方法的示例: 使用fetch(): ``` fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data) }) .then(response => { // 处理响应 }) .catch(error => { // 处理错误 }); ``` 其中,`url`是请求的URL,`data`是要发送的数据,`JSON.stringify()`方法将数据转换为JSON格式。`headers`指定请求头的Content-Type为application/json,表示请求体为JSON格式。 使用XMLHttpRequest: ``` var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); xhr.setRequestHeader('Content-Type', 'application/json'); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { // 处理响应 } }; xhr.send(JSON.stringify(data)); ``` 其中,`url`是请求的URL,`data`是要发送的数据,`JSON.stringify()`方法将数据转换为JSON格式。`setRequestHeader()`方法指定请求头的Content-Type为application/json,表示请求体为JSON格式。`onreadystatechange`事件处理程序在请求完成后处理响应。`xhr.readyState`为4时表示请求已完成,`xhr.status`为200表示响应成功。 ### 回答2: 前端发送POST请求是一种常见的数据传输方式,用于向服务器发送数据并获取响应。在前端开发中,通常使用XMLHttpRequest或Fetch API来实现发送POST请求。 使用XMLHttpRequest发送POST请求的方法如下: 1. 创建一个XMLHttpRequest对象:`var xhr = new XMLHttpRequest();` 2. 设置请求方法和URL:`xhr.open("POST", "http://example.com/api", true);` 3. 设置请求头:`xhr.setRequestHeader("Content-type", "application/json");` 4. 监听请求状态改变事件:`xhr.onreadystatechange = function() { ... };` 5. 发送请求并传输数据:`xhr.send(JSON.stringify(data));` 其中,第2步中的URL是请求的目标地址,可以是相对路径或绝对路径。第3步中的请求头设置了数据的格式,可以根据实际情况选择不同的格式,常见的有application/json和application/x-www-form-urlencoded。 使用Fetch API发送POST请求的方法如下: 1. 使用fetch函数发送请求并传输数据:`fetch("http://example.com/api", { method: "POST", headers: { "Content-type": "application/json" }, body: JSON.stringify(data) })` 2. 处理响应数据:`.then(response => response.json()).then(data => { ... })` 与XMLHttpRequest相比,Fetch API提供了更简洁的语法和更强大的功能,但它不支持IE浏览器。 在发送POST请求时,需要注意以下几点: 1. 确保目标服务器允许跨域请求,否则可能会遇到跨域访问限制。 2. 确定请求的数据格式,并设置正确的Content-type请求头。 3. 根据服务器的要求,将请求的数据转换为相应的格式,常见的有JSON和表单数据。 通过前端发送POST请求,可以实现与服务器的数据交互,完成用户注册、登录、提交表单等常见的操作。 ### 回答3: 前端发送 POST 请求是一种向服务器发送数据的方式,一般用于向服务器提交表单或者发送用户数据。在前端开发中,我们可以使用 JavaScript发送 POST 请求发送 POST 请求的基本步骤如下: 1. 创建一个 XMLHTTPRequest 对象。 2. 设置请求方法为 POST,并指定请求的 URL。 3. 设置请求头,通常为 `"Content-Type": "application/x-www-form-urlencoded"` 或者 `"Content-Type": "application/json"`。 4. 将要发送的数据转换为字符串,并作为请求参数发送。 5. 监听 XMLHttpRequest 的状态变化,等待服务器响应。 6. 接收服务器响应并处理。 这里是一个使用 JavaScript 发送 POST 请求的示例代码: ``` function sendPostRequest(url, data) { var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { var response = JSON.parse(xhr.responseText); // 处理服务器响应 } }; var jsonData = JSON.stringify(data); // 将要发送的数据转换为 JSON 字符串 xhr.send(jsonData); } // 调用发送 POST 请求的函数 var url = "http://example.com/api"; var data = { name: "John", age: 25 }; sendPostRequest(url, data); ``` 在实际开发中,根据需求的不同,可以使用其他的方式发送 POST 请求,例如使用 jQuery 的 `$.ajax` 方法、使用 Fetch API 等。不过基本的原理和步骤都是类似的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值