前端发送请求的几种方式

编程入门 行业动态 更新时间:2024-10-24 10:20:40

前端发送请求的<a href=https://www.elefans.com/category/jswz/34/1769370.html style=几种方式"/>

前端发送请求的几种方式

一.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-getgetBtn.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-postpostBtn.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 },// 注意这里是写数据类型,这里要么不写,要么写jsondataType: "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-getaxios.get("/login", {params: { name: userName.value, pswd: pswd.value }}).then((response) => {// then就相当于successconsole.log("axios-get", response);})// *****************axios-post// post请求  参数直接写{}   不需要外面那层paramsaxios.post("/register", { name: userName.value, psw: pswd.value }).then((response) => {// then就相当于successconsole.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对象。

更多推荐

前端发送请求的几种方式

本文发布于:2024-03-08 20:29:26,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1722224.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:几种   方式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!