Ajax基本原理与实现

这篇具有很好参考价值的文章主要介绍了Ajax基本原理与实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Ajax 的全称是Asynchronous JavaScript and XML(异步的JavaScript 和 XML),其中,Asynchronous 是 异步 的意思,它有别于传统web开发中采用的同步的方式。

        不是新的编程语言,而是一种使用现有标准的新方法。

        最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。(局部刷新)

        AJAX运行环境:浏览器

        AJAX技术早就出现了,2005年google suggest项目采用Ajax技术,页面展示非常丰富效果,用户感受非常良好,使Ajax技术一夜爆红,到现在都是web开发中必不可少的技术之一!


1、关于同步和异步:客户端和服务器端相互通信的基础上
        异步传输是面向字符的传输,它的单位是字符;
        而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。

        同步的话,必须这个操作完了才会执行下一步,在等待期间浏览器会挂起不能执行任何接下来的js代码;异步则是【告诉】浏览器去做,【告诉】是一瞬间的事情,然后就继续执行下一步了,等到结果返回来了,浏览器会通知js执行相应的回调。

2、Ajax工作原理

        Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发送异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。 Ajax请求,其实就是利用浏览器内核 模拟 表单提交,达到页面不刷新的效果,接收服务器的响应,实现局部更新。

Ajax基本原理与实现

3、Ajax请求:

        XMLHttpRequest:Ajax对象的核心(代表浏览器内核)        

        XMLHttpRequest对象:用于在后台与服务器交换数据,这意味着可以在不刷新整个网页的情况下,对网页的某部分进行更新。

<script>
    var xmlhttp;
    function init() {
        if (window.XMLHttpRequest){
            //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码;创建XMLHttpRequest对象
            xmlhttp=XMLHttpRequest;
        }
        else{
            // IE6, IE5 浏览器执行代码;不存在,使用ActiveXObject
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
        }
    }
</script>

向服务器发送请求:将请求发送到服务器,主要使用 XMLHttpRequest 对象的 open() 和 send() 方法:

        1、open() 有三个参数。第一个参数定义发送请求所使用的方法,第二个参数规定服务器端脚本的URL,第三个参数规定应当对请求进行异步地处理;

        2、send() 方法将请求送往服务器。

xmlhttp.open("GET","/jquery/ajaxServlet",true);
xmlhttp.send();

GET OR POST:

        与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用,但是在有些情况下,必须使用 POST 请求;【 Ajax请求,只能提交文本字符,所以像上传内容等功能,必须通过表单post提交】

function doGet(){
    xmlhttp.open("GET","/jquery/ajaxServlet",true);//未提交数据
    xmlhttp.open("GET","/jquery/ajaxServlet?fname=向&lname=洋",true);//已提交数据,异步
    xmlhttp.open("GET","/jquery/ajaxServlet?fname=向&lname=洋",true);//已提交数据,同步
    xmlhttp.send();
}
function doPost() {
    xmlhttp.open("Post","/jquery/ajaxServlet",true);//未提交数据
    xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");//已提交数据
    xmlhttp.send("fname=向&lname=洋");//上传文本字符;send(String)仅针对post请求,用来传递数据
}

4、Ajax响应

        responseText:获得字符串形式的响应数据。

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

Ajax基本原理与实现

5、Ajax事件

        onreadystatechange 事件:当请求被发送到服务器时,我们需要执行一些基于响应的任务,每当监听到ajax对象的readyState 值改变的行为时,就会触发 onreadystatechange 事件,eadyState 属性存有 XMLHttpRequest 的状态信息,下面是 XMLHttpRequest 对象的三个重要的属性:

Ajax基本原理与实现

        ajax 状态码 - xhr.readyState:是用来表示一个 ajax 请求的全部过程中的某一个状态只有当 readyState === 4 的时候,我们才可以正常使用服务端给我们的数据。

        onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务,当 readyState 等于 4 且状态为 200 时,表示响应已就绪:

xmlhttp.onreadystatechange=function() {
    // alert(xmlhttp.readyState);
    if (xmlhttp.readyState==4 && xmlhttp.status==200){
        // alert(xmlhttp.responseText);
        document.getElementById("resDiv").innerHTML=xmlhttp.responseText;//局部更新
    }
};

7、jquery Ajax:与Ajax本质没有任何区别。知识换了jquery语法进行了封装,便于使用

Jquery底层ajax实现。

原生JS实现:

<script>
    var xmlhttp;
    function init() {
        if (window.XMLHttpRequest) {
            //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
            //创建XMLHttpRequest对象
            xmlhttp=new XMLHttpRequest();
        }
        else {
            // IE6, IE5 浏览器执行代码
            //不存在,使用ActiveXObject
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    //提交表单,页面不会有刷一下,用户感受提升
    //get方法通过?的方式传递数据,执行参数
    function doGet(){
        // xmlhttp.open("GET","/jquery/ajaxServlet",true);
        xmlhttp.open("GET","/jquery/ajaxServlet?fname=向&lname=洋",true);//异步请求
        // xmlhttp.open("GET","/jquery/ajaxServlet?fname=向&lname=洋",false);
        //状态变化注册
        xmlhttp.onreadystatechange=function() {
            // alert(xmlhttp.readyState);
            if (xmlhttp.readyState==4 && xmlhttp.status==200){
                // alert(xmlhttp.responseText);
                document.getElementById("resDiv").innerHTML=xmlhttp.responseText;//局部更新
            }
        };

        xmlhttp.send();
        // alert(xmlhttp.responseText);
    }
    function doPost() {
        xmlhttp.open("Post","/jquery/ajaxServlet",true);
        // xmlhttp.open("Post","/jquery/ajaxServlet",false);//false代表同步请求,一般不太使用,效率太低
        //异步请求:send将数据传输给浏览器,浏览器还没返回响应,主程序已经在执行下一句了,导致responseText为null
        //同步请求:send将数据传输给浏览器,浏览器返回响应后,主程序获取responseText的数据展示;一般不太使用,效率太低
        xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");//内容上传文本字符
        //状态变化注册
        xmlhttp.onreadystatechange=function() {
            // alert(xmlhttp.readyState);
            if (xmlhttp.readyState==4 && xmlhttp.status==200){
                // alert(xmlhttp.responseText);
                document.getElementById("resDiv").innerHTML=xmlhttp.responseText;//局部更新
            }
        }
        xmlhttp.send("fname=向&lname=洋");//send(String)仅针对post请求,用来传递数据
        // alert(xmlhttp.responseText);

    }
</script>

jQuery实现:        

        1、$.ajax()

        $("#jqueryAjax").click(function () {
            $.ajax({
                type: "get",
                url: "/jquery/ajaxServlet",
                data: "fname=John&lname=Boston",
                success: function(msg){
                    alert( "Data Saved:::: " + msg );
                }
            });
        });

        2、$.get():发送get请求(ajax的简化)

                语法:$.get(url, [data], [callback], [type])

        $("#jqueryGet").click(function () {
            $.get("/jquery/ajaxServlet", { fname: "John", lname: "2pm" },
                function(data){
                    alert("Data Loaded: " + data);
                });
        });

        3、$.post():发送post请求(ajax的简化)

                语法:$.post(url, [data], [callback], [type])文章来源地址https://www.toymoban.com/news/detail-411294.html

        $("#jqueryPost").click(function () {
            $.post("/jquery/ajaxServlet", { fname: "John", lname: "2pm" },
                function(data){
                    alert("Data Loaded: " + data);
            });
        })

到了这里,关于Ajax基本原理与实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AJAX 使用 JavaScript 的 `XMLHttpRequest` 对象来向服务器发送异步请求

    AJAX 是一种使用异步 HTTP (Ajax) 请求获取和发送数据的技术。它使得网页能够进行异步更新,而不需要重新加载整个页面。通过使用 AJAX,可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。 AJAX 使用 JavaScript 的 XMLHttpRequest 对象来向服务器发送异步请

    2024年01月16日
    浏览(55)
  • 【论文笔记 | 异步联邦】Asynchronous Federated Optimization

    Asynchronous Federated Optimization,OPT2020: 12th Annual Workshop on Optimization for Machine Learning,不属于ccfa 任务激活不频繁(比较难以达成条件):对于弱边缘设备,学习任务只在设备空闲、充电、连接非计量网络时执行 通信不频繁:边缘设备和远程服务器之间的连接可能经常不可用、缓

    2024年04月27日
    浏览(42)
  • 【b站咸虾米】jQuery的ajax异步操作 web前端后端分离技术的原理

    课程地址:【jQuery的ajax异步操作 web前端后端分离技术的原理】 https://www.bilibili.com/video/BV1u5411M7ny/?share_source=copy_webvd_source=b1cb921b73fe3808550eaf2224d1c155 通过案例学习ajax异步操作。 介绍 php,前后端不分离的技术。 ajax,实现前后端分离技术。 在之前,要做动态网站,要懂php,ja

    2024年04月15日
    浏览(51)
  • 通过ajax异步交互实现echarts绘图

    目录 前言 1.引入库 2.flask链接MYSQL读取数据 3.HTML页面echarts绘图 4.结果实现 总结: ECharts 是一个使用 JavaScript 实现的开源可视化库,涵盖各行业图表,满足各种需求。 ECharts 遵循 Apache-2.0 开源协议,免费商用。 ECharts 兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等

    2023年04月14日
    浏览(59)
  • Ajax_4(进阶)同步异步+ 宏任务微任务 + Promise链 + async终极解决方案 +事件循环原理 + 综合案例

    01-同步代码和异步代码 什么是同步代码? 同步代码:逐行执行,需要原地等待结果后,才继续向下执行。 什么是异步代码? 调用后耗时,不阻塞代码继续执行,(不必原地等待),在将来完成后 触发一个 回调函数 。 代码阅读 目标:阅读并回答代码执行和打印的顺序 打印

    2024年02月13日
    浏览(51)
  • 【区块链共识协议论文】【拜占庭异步通信】【Chronos: An Efficient Asynchronous Byzantine Ordered Consensus】

    1、 版权归属:牛津大学出版社(Oxford University Press) 2、 笔者为共同作者之一,联系方式:E230047@e.ntu.edu.sg 3、 引用格式: 4、 代码仓库:见GitHub 第1页 第2页 第3页 第4页 第5页 第6页 第7页 第8页

    2024年02月20日
    浏览(44)
  • 深入理解Async/Await:从原理到实践的JavaScript异步编程指南

    理解 async/await 的原理和使用方法是理解现代JavaScript异步编程的关键。这里我会提供一个详细的实例,涵盖原理、流程、使用方法以及一些注意事项。代码注释会尽量详尽,确保你理解每个步骤。 实例:使用async/await进行异步操作 详细解释和注释: 异步函数定义: async func

    2024年02月05日
    浏览(65)
  • [前端系列第6弹]Ajax简明教程:轻松实现Web页面的异步交互

    在这篇文章中,我将介绍Ajax的基本概念、原理、优缺点、实现方法和应用场景,以及如何使用它来实现Web页面的异步交互。还将给一些简单而实用的例子,让你可以跟着我一步一步地编写自己的Ajax代码。 目录 一、什么是Ajax 二、如何使用Ajax (一)JavaScript中使用Ajax (二)

    2024年02月13日
    浏览(45)
  • JavaScript学习 -- HMAC算法基本原理

    HMAC(Hash-based Message Authentication Code)算法是一种基于哈希算法的消息认证码算法。它可以用于验证和保护数据在传输过程中的完整性和真实性。在JavaScript中,我们可以使用HMAC算法来保证数据的安全性。本篇文章将介绍HMAC算法的基本原理和相关技术,并提供一些实例来演示如

    2024年02月15日
    浏览(35)
  • 【Ajax】笔记-jsonp实现原理

    JSONP是什么 JSONP(JSON With Padding),是一个非官方的跨域解决方案,纯粹凭借程序员的聪明才智开发出来的,只支持get请求。 JSONP 怎么工作的? 在网页有一些标签天生具有跨域能力,比如:img link iframe script. JSONP就是利用Script标签的跨域能力来发送请求的 JSONP的使用 动态的创建一

    2024年02月15日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包