js总结篇之—ajax (看完你就学会整个js)

day19JS-AJAX数据通信 简单介绍了AJAX的使用和使用案列 阅读详情

1. AJAX技术

*ajax是浏览器提供的一系列api,可供javascript调用,实现代码控制请求与相应,实现网络2编程

 2.快速上手

let xhr = new XMLHttpRequest()  //类似于开启用户代理
//初始化,请求了代理对象
console.log(xhr.readyState) //0, UNSENT
xhr.open('get', '/text.php')    //类似于输入地址与方法
//调用了open方法,建立了客户端与服务端的特定端口的连接
console.log(xhr.readyState) //1, OPENED
xhr.send(null)  // 类似于按下确认键, 参数为请求体
//由于ajax请求可能需要花费比较长时间来获取响应数据,但是不能让用户等待,因此设计初衷就是异步,即类似用事件的形式
xhr.onreadystatechange = function(){
    switch(this.readyState){
        case 2: 
            //已经获取到了响应报文的响应头
            console.log(xhr.readyState) //2, HEADERS_RECEIVED
            console.log(xhr.getAllResponseHeaders)
            console.log(xhr.responseText)   //没有数据
            break
        case 3:
            //正在下载响应体中的数据
            console.log(xhr.readyState) //3, LOADING
            console.log(xhr.responseText)   //数据有可能完整也有可能不完整,与响应体大小跟网速有关
            break
        case 4:
            //响应体中的数据下载完成
            console.log(xhr.readyState) //4, LOADED
            console.log(xhr.responseText)   //数据完整
    }
}
xhr.onload = function(){    //HTML5, XHR v2.0发布事件
    console.log(xhr.readyState)     //4
}   
```

* `xhr.responseText`永远只会获取字符串形式的响应体
* `xhr.response`根据content-type的变化而变化

3.遵循http协议

let xhr = new XMLHttpRequest()

console.log(xhr.readyState) 
xhr.open('post', '/text.php')    
//响应头中的content-type必须与请求体中的格式相同,否则服务端无法解析
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')  //设置响应头
xhr.send('name1=value1&name2=value2')   //设置urlencoded的请求体

xhr.onreadystatechange = function(){
    if(this.readyState != 4) return
    console.log(this.status)    //状态码
    console.log(this.responseText)
}

4.同步与异步

* `xhr.open`的第三个参数是async,默认为true,用来控制xhr是否以异步形式发送请求
* 当以同步形式调用时,javascript会在`xhr.send`执行后直到收到响应为止进行等待
## 响应数据格式
* 影响到客户端的javascript如何对服务端返回的数据进行解析
* 服务端需要设置合理的content-type来决定客户端如何对其进行解析
### XML
* 响应头为application/xml
* 从responseXML中获取,且能通过dom操作来操作xml
### JSON
* 响应头为application/json
## 兼容方案
* 对于IE5/6需要使用兼容方案
`xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('microsoft.XMLHTTP')`

5.jQuery中的封装

//底层接口
$.ajax('text/php', {
    utl: 'post',    //method
    dataType: 'json',   //响应体格式, 与data参数无关
    data: obj,      //响应体
    beforeSend: function(xhr){
        //在open之前执行此回调
    },
    success: function(res){
        //res会自动根据服务端响应的content-type自动转换成对象
        //当设置了dataType时,不再由服务端决定而是按照dataType值来转换成对象
    },    //成功接收到响应体后回调,即status为200
    error: function(xhr){
        //当状态码不为200时执行
    },
    complete: function(xhr){
        //与状态码无关
    }

})
//get
$.get('test.json', [data], callback)
//post
$.post('test.json', [data], callback)
$.postJson('test.json', [data], callback)   //设置dataType="json"

6.同源策略

两个url必须协议,域名,端口都相等才属于同源,由于安全问题,默认只有同源的地址才能通过ajax来访问

* 不同源地址之间如果需要相互请求,必须服务端与客户端配合

 6.1跨域请求

跨域请求

    + JSONP

    + 配置代理

    + jsonp  代表传给后端回调函数名称的参数

    + jsonpCallback 具体回调函数名称

JavaScript与AJAX:让网页动起来的魔法与秘密 还记得20年前的互联网吗?每次点击链接都要经历漫长的白屏等待,网页像笨拙的机器人一样机械地刷新。直到有一天,JavaScript遇见AJAX,网页突然被注入了灵魂。就像给木偶系上了提线,原本死板的页面开始学会呼吸,能悄悄和服务器说悄悄话,能在不刷新页面的情况下换装变身。这场静悄悄的革命,彻底改写了我们与网页的相处方式。从最初笨拙的页面刷新,到如今丝滑的实时交互,JavaScript与AJAX的故事就像一部科技进化史。它们教会我们:在数字世界里,真正的魔法不在于炫目的特效,而在于那些看不见的数据流动。 阅读详情

相关推荐

形位公差标注的常见误区与优化策略

本文深入解析机械设计中形位公差标注的常见误区与优化策略,特别针对NX2406用户提供实用技巧。从标注冗余、基准选择到公差值设定等五大误区入手,结合工程图实例展示如何提升标注精度与效率,帮助工程师避免常见错误,优化设计流程,确保零件功能实现与制造可行性。

info6的博客 245

ajax 原生js操作ajax

1.不需要插件支持(一般浏览器且默认开启JavaScript即可);2.用户体验极佳(不刷新页面即可获取可更新的数据);3.提升Web程序的性能(在传递数据方面做到按需放松,不必整体提交);4.减轻服务器和带宽的负担(将服务器的一些操作转移到客户端);...

fagdg的博客 1万+

Nexus7二代刷机教程(新手向)

该教程将使用lineageos(Android 11),同时借鉴了lineage官方的教程和songelf的教程。

2403_84391487的博客 5217

js-ajax(js)

一、Ajax概述 1.什么是同步,什么是异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待卡死状态(不能进行其他操作) 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡死(可以进行其他操作) 2.Ajax的运行原理 页面发起请求,会将请求发送给浏览器内核中的Ajax引擎,Ajax引擎会提...

muzidigbig的博客 3784

信奥编程启蒙 3068:【例13.3】时间差

现在给出一个时间,单位是秒,要求按照电子表格式输出,输出保证不会超过 2424 小时。3067:【例13.2】 电子表。把时间转化成电子表格式输出。电子表上的时间显示方法形如。

901

Newton & Nvidia 开源 GPU 加速机器人仿真器入门教程(一)

Newton 是一个 GPU 加速、可扩展和可微分的物理仿真引擎,专为机器人、研究和高级仿真工作流而设计。Newton 基于 NVIDIA Warp 并集成了 MuJoCo Warp,为用户和开发人员提供了高性能仿真、现代 Python API 和灵活的架构。

机器人控制与仿真应用 1482

javascript的ajax

(域名):443(端口号)/course/list(路径)协议、域名、端口号,任何一个不一样,就是不同域与路径无关,路径一不一样无所谓不同域同域。

我管它叫“知勤者笔记”,主要用来记录和分享我的日常生活与学习经历 5483

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

wzk4869的博客 3022

JavaScript之Ajax(一篇入门Ajax就够了)

Ajax入门一篇就够

weixin_50602266的博客 12万+

一步步带你用C#开发Modbus通信上位机(附完整代码与工程思路)

Modbus上位机开发指南(C#实现) 本文详细介绍使用C#开发Modbus上位机系统的全过程,覆盖RTU和TCP两种协议。内容包含:1)需求分析与技术选型(WinForms+NModbus4);2)分层架构设计(UI/业务/通信层);3)通信层核心代码实现(串口/以太网连接、数据读写);4)功能模块开发(设备管理、数据采集、远程控制)。提供可直接复用的Modbus RTU客户端代码示例,包含连接管理、线圈读写、寄存器操作等工业场景必备功能。通过系统化的开发流程,帮助开发者快速构建稳定可靠的Modbus监控

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 821

PCL 从LAS文件中获取点云的颜色【2026最新版】

PCL从LAS文件中获取点云的RGB信息(pcl::PointXYZRGB)并进行可视化。博客长期更新,本文最新更新时间为:2026年5月4日。

点云侠的博客 1720

Vue总结篇中 (看完你就学会整个Vue)

1.插槽 1. 允许 子组件在 父组件中使用 通过子组件(双标签) 嵌套 html结构,这个结构可以在子组件中通过<slot/>组件接收 2. 具名插槽 <slot name="a"></slot> 父组件里面的子组件在给上名 3. 作用域插槽 可以使用子组件数据 <script> // 定义子组件对象 const Child = { template: ` <div>

Sakura1921的博客 734

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【你也能从零基础学会网站开发】Web建站之javascript入门篇 浅谈JavaScript中的AJAX和XMLHttpRequest对象

天哪! ajax好厉害!

极客小俊 1146

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

js总结篇下(看完你就学会整个js——进阶篇)

1.数据类型 # 数据类型 ## 基本(值)类型 * string: 任意字符串 * number: 任意数字 * boolean: true/false * undefined: undefined * null: null ## 对象类型 * object: 基本对象类型 * function: 特殊对象, 可以执行 * array: 特殊对象, 可通过下标执行, 内部有序 判断数据类型 * typeof 返回数据类型的字符串表达 可以判断数值, 字符串, undefined

Sakura1921的博客 317

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

什么是AJAX?如何使用原生JavaScript进行AJAX请求?

什么是AJAX?如何使用原生JavaScript进行AJAX请求?

商务合作欢迎私信我 2万+

028-AJAX [基于JQeury的前端JS异步库,5分钟让你学会AJAX]

总的来说,就是一个基于JQeury的前端JS异步库 概念: ASynchronous JavaScript And XML 异步的JavaScript 和 XML Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统的网页(不...

陈塘关哪吒 419

JavaScript之彻底学会Event Loop

前言 学习JavaScript执行机制能更好的理解JavaScript的代码执行顺序,进而更好的理解JavaScript的异步模式。 Event Loop即事件循环,是浏览器或Node解决单线程运行时不会阻塞的一种机制。(也可以理解为经常使用的异步) 在正式学习Event Loop之前,先提出几个问题: 什么是同步与异步? JavaScript是一门单线程语言,那如何实现异步? 同步任务和异步任务的执行顺序如何? 异步任务是否存在优先级? 同步与异步 计算机领域中的同步与异步和我们现实社会的同步和异

战场小包的博客 2445

js原生ajax写法

博主在大二做数据库课设时,接触的js。边学边做,当时还没接触ajax,所以在遇到每次请求地址都会刷新这个问题时,博主干了你们绝对想不到的事:在页面里用了很多“隐形”的frame来阻止当前页面的刷新。其实当时博主听身边的大佬提起过ajax,当时以为很难,而且课设时间又紧就没有学习ajax.直到大三上了web课,发现ajax原来如此简单。相信我,看了这篇博客,你也能学会使用ajax进行异步通信。下面贴...

qq_34568169的博客 2421

ajax和jquery有什么关系,Ajax和jQuery有什么区别

Ajax和jQuery有什么区别Ajax和jQuery有什么区别,为什么招聘信息上面都写得是要求精通Ajax技术,貌似没有提到jQuery,应该学习哪个?更新时间:2019-05-12 06:03最满意答案如果只是找工作的话我推荐你只学jquery跟extjs 并且去了解一下JavaScript的简单实用,就可以了,对于ajax的话jquery中已经有实现的方法了,所以学会jquery 等于会用a...

weixin_36294922的博客 2193

[四天学会ajax] 学习Ajax教程第二天,JavaScript 和 Ajax 发出异步请求

多数 Web 应用程序都使用请求/响应模型从服务器上获得完整的 HTML 页面。常常是点击一个按钮,等待服务器响应,再点击另一个按钮,然后再等待,这样一个反复的过程。有了 Ajax 和 XMLHttpRequest 对象,就可以使用不必让用户等待服务器响应的请求/响应模型了。本文中,Brett McLaughlin 介绍了如何创建能够适应不同浏览器的 XMLHttpRequest 实例,建立和发送

薛敬明的专栏 960

【AJAX】一篇文章弄懂并学会AJAX

  概念 ASynchronous JavaScript And XML:异步的JavaScript和XML 同步和异步:客户端和服务器端相互通信的基础上。同步——客户端在等待服务器端的响期间不能做其他操作;异步——服务器处理请求的过程中,客户端可以进行其他的操作。 传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面 Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术   原生JS实现 function fun() { //1.创建核心对

丧心病狂Loli控的博客 265

一篇文章就学会Ajax

文章目录1. 原生Ajax简介1.1 Ajax简介1.2 Ajax特点AJAX 的优点AJAX 的缺点1.3 HTTP报文格式1.3.1 请求报文1.3.2 响应报文1.4 Ajax使用使用步骤1.5 IE缓存1.6 取消请求1.7 取消重复请求1.8 超时和网络异常2. Jquery中使用Ajaxget方法发送post方法发送通用Ajax方法发送3. axios中使用Ajaxget方法post方法通用方法4. Ajax解决跨域问题同源策略JSONP——解决跨越问题JSONP使用方法CORS——解决跨越问题

HelloWorld 781

一个demo学会js

快捷链接:js系列教程1-数组操作全解js系列教程2-对象和属性全解js系列教程3-字符串和正则全解js系列教程4-函数与参数全解js系列教程5-容器和算法全解js系列教程6-BOM操作全解js系列教程7-DOM操作全解js系列教程8-事件全解js系列教程9-表单元素全解js系列教程10-canvas绘图全解js系列教程11-json、ajax、comet全解js...

167

如何简单学会ajax,学会自己封装简单AJAX

什么是AJAXAJAX不是JavaScript的规范,他只是一种技术方案,也并不是新技术,他依赖于HTML/CSS/JS,全称是异步JavaScript和XML,核心是浏览器提供的XMLHttpRequest。如何实现?1.首先你需要定义一个函数window.ajax = function(){// 代码}2.想想AJAX需要什么参数url,method,body,header,success,f...

weixin_34504277的博客 268

ajax html css 失效,关于 ajax 动态返回数据 css 以及 js 失效问题

ajax 毕竟是异步的 所以动态加载出来的数据 难免遇到 css 或者 js 失效的问题,所以要动态加载 css ji等文件了1.公共方法 load//动态加载 js /cssfunction loadjscssfile(filename, filetype) {if (filetype == "js") { //判定文件类型var fileref = document.createElement...

weixin_40001805的博客 1082
上一篇: js总结篇下(看完你就学会整个js——进阶篇)
下一篇: js总结篇之—git (看完你就学会整个js)
Sakura1921
博客等级 码龄5年 29粉丝 20原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值