热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ajax道理一篇就够了

媒介AJAX即“AsynchronousJavascriptAndXML”,是指一种建立交互式网页应用的网页开辟手艺。AJAX是一种用于建立疾速动态网页的手艺。它能够令开辟者只向服

媒介

AJAX即“Asynchronous Javascript And XML”,是指一种建立交互式网页应用的网页开辟手艺。AJAX 是一种用于建立疾速动态网页的手艺。它能够令开辟者只向服务器猎取数据(而不是图片,HTML文档等资本),互联网资本的传输变得亘古未有的轻量级和地道,这激发了宽大开辟者的创造力,使形形色色功能强大的收集站点,和互联网应用如雨后春笋平常冒出,不停带给人欣喜。

《Ajax道理一篇就够了》

本文首发地点为GitHub博客,写文章不容易,请多多支撑与关注!

一、什么是Ajax

Ajax是一种异步要求数据的web开辟手艺,关于改良用户的体验和页面机能很有协助。简朴地说,在不须要从新革新页面的状况下,Ajax 经由过程异步要求加载背景数据,并在网页上显现出来。罕见应用场景有表单考证是不是登入胜利、百度搜刮下拉框提醒和快递单号查询等等。Ajax的目标是进步用户体验,较少收集数据的传输量。同时,因为AJAX要求猎取的是数据而不是HTML文档,因而它也节省了收集带宽,让互联网用户的收集冲浪体验变得越发顺畅。

二、Ajax道理是什么

在诠释Ajax道理之前,我们无妨先举个“指导想找小李报告一下事变”例子,指导想找小李问点事,就托付秘书去叫小李,本身就接着做其他事变,直到秘书通知他小李已到了,末了小李跟指导报告事变。

《Ajax道理一篇就够了》

Ajax要求数据流程与“指导想找小李报告一下事变”相似。其中最中心的依靠是浏览器供应的XMLHttpRequest对象,它饰演的角色相当于秘书,使得浏览器能够发出HTTP要求与吸收HTTP相应。浏览器接着做其他事变,等收到XHR返返来的数据再衬着页面。

《Ajax道理一篇就够了》

理解了Ajax的事变道理后,接下来我们讨论下怎样运用Ajax。

三、Ajax的运用

1.建立Ajax中心对象XMLHttpRequest(记得斟酌兼容性)

1. var xhr=null;
2. if (window.XMLHttpRequest)
3. {// 兼容 IE7+, Firefox, Chrome, Opera, Safari
4. xhr=new XMLHttpRequest();
5. } else{// 兼容 IE6, IE5
6. xhr=new ActiveXObject("Microsoft.XMLHTTP");
7. }

2.向服务器发送要求

1. xhr.open(method,url,async);
2. send(string);//post要求时才运用字符串参数,不然不必带参数。

  • method:要求的范例;GET 或 POST
  • url:文件在服务器上的位置
  • async:true(异步)或 false(同步)

注重:post要求一定要设置要求头的花样内容

xhr.open("POST","test.html",true);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send("fname=Henry&lname=Ford"); //post要求参数放在send内里,即要求体

3.服务器相应处置惩罚(辨别同步跟异步两种状况)

responseText 取得字符串情势的相应数据。

responseXML 取得XML 情势的相应数据。

①同步处置惩罚

1. xhr.open("GET","info.txt",false);
2. xhr.send();
3. document.getElementById("myDiv").innerHTML=xhr.responseText; //猎取数据直接显如今页面上

②异步处置惩罚

相对来说比较复杂,要在要求状况转变事宜中处置惩罚。

1. xhr.Onreadystatechange=function() {
2. if (xhr.readyState==4 &&xhr.status==200) {
3. document.getElementById("myDiv").innerHTML=xhr.responseText;
4. }
5. }

什么是readyState?

readyState是XMLHttpRequest对象的一个属性,用来标识当前XMLHttpRequest对象处于什么状况。
readyState总共有5个状况值,分别为0~4,每一个值代表了差别的寄义

  • 0:未初始化 — 还没有挪用.open()要领;
  • 1:启动 — 已挪用.open()要领,但还没有挪用.send()要领;
  • 2:发送 — 已挪用.send()要领,但还没有吸收到相应;
  • 3:吸收 — 已吸收到部份相应数据;
  • 4:完成 — 已吸收到悉数相应数据,而且已能够在客户端运用了;

什么是status?

HTTP状况码(status)由三个十进制数字构成,第一个十进制数字定义了状况码的范例,后两个数字没有分类的作用。HTTP状况码共分为5种范例:

《Ajax道理一篇就够了》

罕见的状况码

仅记录在 RFC2616 上的 HTTP 状况码就达 40 种,若再加上 WebDAV(RFC4918、5842)和附加 HTTP 状况码 (RFC6585)等扩大,数目就达 60 余种。接下来,我们就引见一下这些具有代表性的一些状况码。

  • 200 示意从客户端发来的要求在服务器端被一般处置惩罚了。
  • 204 示意要求处置惩罚胜利,但没有资本返回。
  • 301 示意永久性重定向。该状况码示意要求的资本已被分配了新的URI,今后应运用资本如今所指的URI。
  • 302 示意临时性重定向。
  • 304 示意客户端发送附带前提的要求时(指采纳GET要领的要求报文中包括if-matched,if-modified-since,if-none-match,if-range,if-unmodified-since任一个首部)服务器端许可要求接见资本,但因发作要求未满足前提的状况后,直接返回304Modified(服务器端资本未转变,可直接运用客户端未逾期的缓存)
  • 400 示意要求报文中存在语法毛病。当毛病发作时,需修正要求的内容后再次发送要求。
  • 401 示意未受权(Unauthorized),当前要求须要用户考证
  • 403 示意对要求资本的接见被服务器拒绝了
  • 404 示意服务器上没法找到要求的资本。除此之外,也能够在服务器端拒绝要求且不想说明来由时运用。
  • 500 示意服务器端在实行要求时发作了毛病。也有多是Web应用存在的bug或某些临时的毛病。
  • 503 示意服务器临时处于超负载或正在举行停机保护,如今没法处置惩罚要求。

③GET和POST要求数据区分

  • 运用Get要求时,参数在URL中显现,而运用Post体式格局,则放在send内里
  • 运用Get要求发送数据量小,Post要求发送数据量大
  • 运用Get要求安全性低,会被缓存,而Post要求反之

关于第一点区分,概况见下面两张图:

《Ajax道理一篇就够了》

《Ajax道理一篇就够了》

四、结束语

实在经由过程 XMLHttpRequest或许封装后的框架举行收集要求,这类体式格局已有点老旧了,设置和挪用体式格局异常杂沓,近几年方才出来的Fetch供应了一个更好的替换要领,它不仅供应了一种简朴,合乎逻辑的体式格局来跨收集异步猎取资本,而且能够很容易地被其他手艺运用。

想相识怎样应用Fetch要求数据,请猛戳
fetch 怎样要求罕见数据花样

想相识Ajax怎样要求背景数据,请猛戳
Ajax要求背景数据

参考文章

Javascript教程

Ajax 简介

再也不学AJAX了!(一)AJAX概述

HTTP菜鸟教程

AJAX的POST和GET要求的区分


推荐阅读
  • 本文探讨了如何通过检测浏览器类型来动态加载特定的npm包,从而优化前端性能。具体而言,仅在用户使用Edge浏览器时加载相关包,以提升页面加载速度和整体用户体验。此外,文章还介绍了实现这一目标的技术细节和最佳实践,包括使用User-Agent字符串进行浏览器识别、条件加载策略以及性能监控方法。 ... [详细]
  • 本文详细介绍了 Java 网站开发的相关资源和步骤,包括常用网站、开发环境和框架选择。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • 本文介绍了如何利用HTTP隧道技术在受限网络环境中绕过IDS和防火墙等安全设备,实现RDP端口的暴力破解攻击。文章详细描述了部署过程、攻击实施及流量分析,旨在提升网络安全意识。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • CSS3 @font-face 字体应用技术解析与实践
    在Web前端开发中,HTML教程和CSS3的结合使得网页设计更加多样化。长期以来,Web设计师受限于“web-safe”字体的选择。然而,CSS3中的`@font-face`规则允许从服务器端加载自定义字体,极大地丰富了网页的视觉效果。通过这一技术,设计师可以自由选择和使用各种字体,提升用户体验和页面美观度。本文将深入解析`@font-face`的实现原理,并提供实际应用案例,帮助开发者更好地掌握这一强大工具。 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
author-avatar
兰花m123_680
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有