热门标签 | 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要求的区分


推荐阅读
  • 本文详细解析了JavaScript中相称性推断的知识点,包括严厉相称和宽松相称的区别,以及范例转换的规则。针对不同类型的范例值,如差别范例值、统一类的原始范例值和统一类的复合范例值,都给出了具体的比较方法。对于宽松相称的情况,也解释了原始范例值和对象之间的比较规则。通过本文的学习,读者可以更好地理解JavaScript中相称性推断的概念和应用。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • “你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 本文介绍了获取关联数组键的列表的方法,即使用Object.keys()函数。同时还提到了该方法在不同浏览器的支持情况,并附上了一个代码片段供读者参考。 ... [详细]
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社区 版权所有