Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Ajax教程_ajax是服务器端动态网页技术

Ajax教程_ajax是服务器端动态网页技术

作者头像
全栈程序员站长
发布于 2022-09-20 03:00:36
发布于 2022-09-20 03:00:36
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

Ajax教程

Ajax能做什么

Ajax是一种异步请求数据的web开发技术,目前主要用于异步,大家都知道,浏览器主线程是单线程的,也就是一次只能干一件事,以Ajax就是让浏览器当主线程完成后去干别的事情,比如发送请求,加载接口数据等等.这个技术通过XMLHttpRequest对象实现,具体的机制大家可以参考浏览器的时间环机制.

Ajax的应用

以前我们在开发的时候,没有ajax,想要看另一个内容,只能让浏览器跳转到另一个页面,重新加载.导致用户体验很不好,并且由于同一个网站很多内容都一样,导致相同的内容被请求了多次,也浪费了宝贵的时间.有了Ajax,就是可以让数据在需要时候在加载,比如我有一个展示数据的表格和提交数据的表单,我们可以在提交的时候利用Ajax在不刷新页面的情况下提交到后台,之后让后台给我们一个响应结果,我们可以直接替换到原始的标签,这样用户就可以看到更新后的数据,对用户的体验页非常好

Ajax使用

原生Ajax

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    // 创建Ajax
    let xhr = new XMLHttpRequest();
    // 配置请求地址和请求方式
    xhr.open("get", "http://localhost:3000/jsonData");
    // 发送请求
    xhr.send();
    // 监听事件 onload 接收完整的服务器响应数据
    xhr.onload = function () {
        console.log(xhr.responseText);
        // document.getElementsByTagName("h1")[0].innerHTML = xhr.responseText;
        // json字符串转json对象
        let resText=JSON.parse(xhr.responseText);
        document.getElementsByTagName("h1")[0].innerHTML = resText.age;

    }

这个是原生最简单的方式,其他的方式大家可以百度

目前因为使用原生的Ajax太繁琐,我们一般使用封装后的Ajax,目前常用的有Jquery的$.ajax和axios,还有原生的fetch.

Jquery Ajax

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  $.ajax({
            type: "post",   //请求类型
            dataType: "json",   //请求数据返回类型
            url: "https://aliyun.firehua.top/admin/json_data/sent_data",    //请求地址
            data: $('#form').serialize(),       //表单序列化
            success: function (result) {        //成功
                console.log(result);
                if (result.code === 200) {
                    console.log(result);
                    console.log("成功");
                    $("#name").text(result.data.name);
                    $("#phone").text(result.data.phone);
                    $("#sex").text(result.data.sex);
                } else {
                    console.log(result);
                    console.log("失败");
                }
            },
            error: function (result) {      //失败
                console.log(result);
                console.log("异常");
            }
        });

作者:我的猫YMY
链接:https://juejin.im/post/6844903976782004237
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这里引用一下掘金大佬我的猫YMY的文章,具体大家可以看看,jquery也可以说比较常用,基本上写起来也还是比较简单,但是听周围的人说现在都不用jquery因为比较慢,下面就介绍介绍别的方式.

Vue axios

Vue是推荐用axios框架,这个是基于promise的,我个人感觉写起来比jquery方便,并也比较快,我比较推荐

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//发送一个`POST`请求
axios({
    method:"POST",
    url:'/user/12345',
    data:{
        firstName:"Fred",
        lastName:"Flintstone"
    }
});

作者:ZHero88311
链接:https://juejin.im/post/6844903977016885255
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这里引用一下掘金大佬ZHero88311的文章,大家可以看看,这种方式看起来就比jquery的ajax要清爽,并且基本上和vue配合起来效果更佳,也不需要转换json,可以使用.then来处理响应,并且也可以编辑配置文件,如默认请求等等,还是比较方便

fetch

fetch是es6提出的一种解决方式,没有用xmlrequest,使用了原生的js,应该是速度最快的,但是兼容性可能有问题

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    fetch('http://localhost:3000/data/123',
        {method:'get'}).then(data=>{
           return data.text();
        }).then(ret=>{
            console.log(ret);
        })

这个大家需要注意需要两次then才能获取到响应数据

Ajax跨域

因为浏览器的同源策略,导致一个页面只能访问自己站点的东西,访问别的服务器会报错误,这个是为了安全,所有我们需要跨域.一般常见的跨域有三种,jsonp,cors还有代理

jsonp跨域

jsonp就是动态创建一个script标签,里面请求想要的文件,一般是json数据,可以不受限制

这个是jquery的jsonp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 $.ajax({
                     url: "http://localhost:9090/student",
                     type: "GET",
                     dataType: "jsonp", //指定服务器返回的数据类型
                     success: function (data) {
                         var result = JSON.stringify(data); //json对象转成字符串
                         $("#text").val(result);
                     }
                 });

但是jsonp只能用于get请求,所有讲解下面的cors

cors跨域

cors跨域则是由服务端进行设置,一般不需要前端负责

下面是node的方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   'Access-Control-Allow-Credentials': true, //允许后端发送cookie
      'Access-Control-Allow-Origin': req.headers.origin || '*', //任意域名都可以访问,或者基于我请求头里面的域
      'Access-Control-Allow-Headers': 'X-Requested-With,Content-Type', //设置请求头格式和类型
      'Access-Control-Allow-Methods': 'PUT,POST,GET,DELETE,OPTIONS',//允许支持的请求方式
      'Content-Type': 'application/json; charset=utf-8'//默认与允许的文本格式json和编码格式

代理跨域

代理跨域就是讲浏览器的请求让本站点的服务器去请求,因为服务器没有跨域概念,所有可以直接拿到

这个是vue的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  devServer: {
    host: 'localhost',
    port: 8081,
    proxy: {
      '/api': {
        target: 'http://mall-pre.springboot.cn',
        changeOrigin: true,
        pathRewrite: {
          '/api': ''
        }

      }
    }
  }

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/168059.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
前端使用ajax_ajax属于前端吗
大家好,又见面了,我是你们的朋友全栈君。 原生AJAX 名称: 异步的javascript and xml 原理: 通过XMLHttpRequest与服务器交换数据 服务器数据通过json或者xml格式返回 浏览器通过js+css渲染展示数据 GET 创建xhr open打开连接 监听readystate readyState 4准备状态完毕 status 状态码200 响应成功 send 发送 <button id="btn">点击</button> <p id="content"></p> <scrip
全栈程序员站长
2022/11/11
1.8K0
史上最全的AJAX
对于web应用程序:用户浏览器发送请求.服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML),渲染并显示浏览器上·
Wyc
2018/09/11
4.4K0
ajax和fetch、axios的优缺点以及比较
前端是个发展迅速的领域,前端请求自然也发展迅速,从原生的XHR到jquery ajax,再到现在的axios和fetch。
前端迷
2018/10/29
9.4K0
【通信】前端中的几类数据交互方式
服务器 res.setHeader(‘Access-Control-Allow-Origin’,‘*’);
前端修罗场
2023/10/07
3280
【通信】前端中的几类数据交互方式
跨域的基本概念
小城故事
2024/08/24
1180
ajax跨域问题-web开发必会
ajax跨域问题 跨域 同源策略限制 同源策略阻止从一个域上加载的脚本获取或操作另一个域上的文档属性。也就是说,受到请求的 URL 的域必须与当前 Web 页面的域相同。这意味着浏览器隔离来自不同源的内容,以防止它们之间的操作。 解决方式 通常来说,比较通用的有如下两种方式,一种是从服务器端下手,另一种则是从客户端的角度出发。二者各有利弊,具体要使用哪种方式还需要具体的分析。 服务器设置响应头 服务器代理 客户端采用脚本回调机制。 方式一 Access-Control-Allow-Origin 关键字只有在
Java帮帮
2018/03/19
1.7K0
ajax跨域问题-web开发必会
AJAX全套
对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上。
用户1214487
2022/03/26
1.6K0
ajax全套
对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上。
菲宇
2019/06/13
3.1K0
ajax全套
同源策略和跨域解决方案
下表给出了相对http://a.xyz.com/dir/page.html同源检测的示例: 
py3study
2020/01/19
1.6K0
同源策略和跨域解决方案
【Java 进阶篇】Ajax 入门:打开前端异步交互的大门
欢迎来到前端异步交互的世界!在这篇博客中,我们将深入探讨 Ajax(Asynchronous JavaScript and XML),这是一项能够让你的网页在不刷新的情况下与服务器进行数据交互的技术。无论你是刚刚踏入前端开发的小白,还是有一定经验的开发者,相信通过本文的学习,你将对 Ajax 有更深入的理解。
繁依Fanyi
2023/11/20
8770
【Java 进阶篇】Ajax 入门:打开前端异步交互的大门
【vue学习】axios
文章出自https://www.jianshu.com/p/d771bbc61dab
kirin
2020/05/09
1.3K0
「深入浅出」前端开发中常用的几种跨域解决方案
看完本文可以系统地掌握,不同种跨域解决方案间的巧妙,以及它们的用法、原理、局限性和适用的场景
用户6835371
2021/06/01
9670
「深入浅出」前端开发中常用的几种跨域解决方案
原生——ajax
什么是Ajax?(前后端数据交互) Asynchronous JavaScript and XML(异步JavaScript和XML)
FinGet
2019/06/28
2K0
Ajax第一节
异步: 不受当前任务的影响,两件事情同时进行,做一件事情时,不影响另一件事情的进行。
用户3461357
2019/08/02
4K0
JSONP、CORS解决跨域问题
是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不是所有的请求都给做跨域,对href属性都不拦截。
用户1214487
2022/03/26
1.6K0
JSONP、CORS解决跨域问题
都0202年了,你还不会前后端交互吗
为了方便我采用 Python Flask 编写 API,如果有其他 api 服务搭建的同学,可以移步:四种方式搭建 API,总有一款适合你
Gorit
2021/12/08
1.8K0
都0202年了,你还不会前后端交互吗
Ajax技术详解(上)
我们知道,在没有ajax技术之前,客户端若要与服务端进行数据交互,它的大概流程是:客户端发起一个http请求(也可能是其他的请求)然后处于等待状态,等到服务端将数据发送给客户端,客户端才会进行下一步操作,简单来讲,就是单纯的同步操作。然而,在现如今这个用户至上的年代,任何一个让用户不满的小操作都会导致巨大的流量丢失。
石璞东
2020/05/09
2K0
【JavaWeb】学习笔记——Ajax、Axios
AJAX(Asynchronous JavaScript And XML):异步的JavaScript 和 XML
鸡先生
2022/10/29
8690
【JavaWeb】学习笔记——Ajax、Axios
什么是跨域?一文弄懂跨域的全部解决方法
跨域(Cross-Origin Resource Sharing,简称 CORS)是一种安全策略,用于限制一个域的网页如何与另一个域的资源进行交互。这是浏览器实现的同源策略(Same-Origin Policy)的一部分,旨在防止恶意网站通过一个域的网页访问另一个域的敏感数据。
程序员洲洲
2024/06/07
6.2K0
什么是跨域?一文弄懂跨域的全部解决方法
只知道ajax?你已经out了
随着前端技术的发展,请求服务器数据的方法早已不局限于ajax、jQuery的ajax方法。各种js库已如雨后春笋一般,蓬勃发展,本文主要想介绍其中的axios和fetch。
前端林子
2018/11/17
3.6K4
只知道ajax?你已经out了
相关推荐
前端使用ajax_ajax属于前端吗
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档