Javascript学习笔记15 Ajax

std::map看来可以被淘汰了?可以用vector来替代,而且更好 vector的优势在于内存连续,可以先std::sort,然后std::lower_bound,或者std::binary_search。而std::map,insert的时候,需要new出内存。 阅读详情

XMLHttpRequest对象

创建XHR对象(IE7+,其他浏览器)

var xhr = new XMLHttpRequest();

XHR用法
启动一个请求,使用open()方法,接受3个参数,要发送的请求类型,请求URL(相对或绝对路径)和表示是否异步的布尔值

xhr.open("get","example.php",false);

发送请求,使用send()方法,接受一个参数,即要作为请求主体发送的数据,不发送数据为null

xhr.send(null);

当浏览器接受到响应后,响应的数据会自动充填到XHR对象的属性中

  • responseText:作为响应主体返回的文本
  • responseXML:当响应类型为”text/xml”或”application/xml”时,此属性将包含XML DOM文档信息
  • status:响应的HTTP状态
  • statusText:HTTP状态的说明

XHR对象的readyState属性表示请求的/响应过程的活动阶段,当值为4时,表示响应已经接受完毕,每次状态变化,都会触发readystatechange事件,可以利用此事件来检测状态

xhr.onreadstatechange = function(){
    if (xhr.readyState == 4){
        if ((xhr.status >=200 && xhr.status <300) || xhr.status == 304){  //接受成功时
            alert(xhr.responseText);
        }else{
            alert("接受失败:" + xhr.status);
        }
    }
};

收到响应之前,还可以使用xhr.abort()方法取消异步请求

设置和获取HTTP头部消息
使用setRequestHeader()方法可以设置自定义的请求头部信息,接受两个参数,头部字段的名称和值。该方法必须在调用open()方法之后,且调用send()方法之前调用。

var xhr = new XMLHttpRequest();
xhr.open("get","example.php",true);
xhr.setRequestHeader("Myheader","Myvalue");
xhr.send(null);

调用getResponseHeader()方法,并传入头部字段名称,可以获取相应的响应头部信息。而调用getAllResponseHeaders()可以获取包含所有头部信息的长字符串。

var myHeader = xhr.getResponseHeader("MyHeader");
var allHeaders = xhr.getAllResponseHeaders();

GET请求
可以在传入open()方法的URL末尾添加查询字符串,但名称和值必须经过encodeURIComponent()方法正确的编码才可以

name = encodeURIComponent(name);
value = encodeURIComponet(value);
xhr.open("get", "example.php?"+name+"="+value, true);

POST请求
若为POST请求,则需将数据序列化后,传入send()方法中,模仿表单提交,需将Content-Type头部信息设置为application/x-www-form-urllencoded

xhr.open("post","example.php",true);
xhr.setRequestHeader("Content-Type","application/x-www-form-urllencoded");
data="name1=value1&name2=value2&name3=value3";
xhr.send(data);

XMLHttpRequest 2级

FormData
FormData为序列化表单以及创建与表单格式相同的数据提供了便利。可以向FormData构造函数中传入表单元素,也可以用表单元素的数据预先向其中填入键值对。创建了实例后,可以直接将其传给send()方法。

var data = new FormData(document.forms[0]);  //直接传入表单元素
xhr.send(data);
var data = new FormData();
data.append("name","zjw"); //传入键值对
xhr.send(data);

超时设定
XHR对象的timeout属性,表示在等待响应多少毫秒之后就终止。当超时终止请求之后,再访问status属性,将会出现错误。

xhr.open("get","timeout.php",true);
xhr.timeout = 1000;    //将超时设置为1秒钟
xhr.ontimeout = function(){
    alert("error");
};
xhr.send(null);

重写XHR响应的MIME类型
调用overrideMimeType()方法可以重写MIME类型,必须在调用send()方法之前调用

xhr.open("get","text.php",true);
xhr.overrideMimeType("text/xml");  //将MIME类型重写为"text/xml"
xhr.send(null);

进度事件

  • loadstart:在接受到响应数据的第一个字节时触发
  • progress:接受期间不断触发,其中event对象具有lengthComputable(表示进度信息是否可用的布尔值)、position(已接受的字节数)、totalSize(总字节数)属性
  • error:请求发生错误时触发
  • abort:调用abort()方法,而终止连接时触发
  • load:接受到完整的响应数据时触发,可以替代readystatechange事件,无需再检测readyState属性是否等于4
  • loadend:通信完成或触发error、abort、load事件后触发
xhr.onload = function(){
    if ((xhr.status >=200 && xhr.status <300) || xhr.status == 304){  //接受成功时
            alert(xhr.responseText);
    }else{
            alert("接受失败:" + xhr.status);
    }
};

xhr.onprogress = function(event){
    var divstatus = document.getElementById("status");
    if (event.lengthComputable){
        divstatus.innerHTML = event.position / event.totalSize *100 + "%";
    }
};
xhr.open("get","events.php",true);
xhr.send(null);

跨域源资源共享

CORS(Cross-Origin Resource Sharing)定义了在必须访问跨域资源时,浏览器与服务器应该如何沟通。其基本思想是使用自定义的HTTP头部让浏览器与服务器进行沟通,决定请求或响应是接受或拒绝。注意请求和响应都不包含Cookie信息。

浏览器请求附加头部

Origin:http://www.nczonline.net

如果服务器认为请求可接受,将会返回对应的头部信息

Access-Control-Allow-Origin:http://www.nczonline.net

浏览器接受到这个响应的头部信息,若信息匹配正确,将会处理。

IE对CORS的实现
IE引入了XDR对象,来实现CORS,该对象的大部分方法和属性与XHR类似

var xdr = new XDomainRequest();  //创建XDR对象
xdr.onload = function(){
    alert(xdr.responseText);
};
xdr.open("get","https://www.zjw666.top/example"); //只接受两个参数,不支持同步执行
xdr.send(null);
  • XDR对象也具有timeout属性以及contentType属性,用于在POST请求中表示数据格式

其他浏览器对CORS的实现
其他浏览器都通过XHR对象实现了CORS,访问其他域资源非常简单,直接在open()方法中传入绝对URL即可,且支持异步和同步请求

xhr.open("get","http://www.zjw666.com/123",true);
  • 当跨域请求资源时,不能使用setRequestHeader()方法设置头部信息
  • 不能发送和接受Cookie
  • 调用getAllResponseHeaders()方法,总会返回空字符串

其他跨域技术

图像Ping
最常用语跟踪用户点击页面或动态广告的曝光次数

img.onload = img.onerror = function(){
    alert("done");
};
img.src = "http://www.zjw666.top";

JSONP
是JSON with padding的简写,JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面调用的函数
返回数据

callback({"name":"zjw"});

典型的请求

http://freegeoip.net/json/?callback=handleResponse   // 此处回调函数名为handleResponse

使用<script>元素使用JSONP的例子

function handleResponse(response){
    alert(response.ip);
}

var script = document.createElement("script");
script.src = "http://freegeoip.net/json/?callback=handleResponse";
document.body.insertBefore(script,document.body.firstChild);
SAP S/4HANA 数据归档的实施方法 实施 SAP S/4HANA 数据归档是一个系统的过程,涉及到策略的定义、技术的执行以及后续的维护和验证。正确的归档策略不仅能优化系统性能,还能帮助企业降低运营成本,确保数据安全,并符合相关法律法规的要求。通过以上案例,我们可以看到不同行业如何依据自己的业务需求和法规要求,利用 SAP S/4HANA 的强大功能来实现数据归档的目标。这些实践证明了数据归档在现代企业信息管理中的重要地位和作用。 阅读详情

相关推荐

matinal:SAP 采购中形成的差异

如果库存足够会影响到物料。

matinal 當冬夜漸暖 。公众号:matinal 820

XMLHttpRequest 对象

作者 |阮一峰1、简介浏览器与服务器之间,采用 HTTP 协议通信。用户在浏览器地址栏键入一个网址,或者通过网页表单向服务器提交内容,这时浏览器就会向...

web前端开发 1415

window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm)

文章目录一、卸载node二、安装nvm三、配置路径和下载源四、使用nvm安装node五、nvm常用命令六、卸载nvm七、遇到的问题 nvm 全名 node.js version management,顾名思义是一个nodejs的版本管理工具。通过它可以安装和切换不同版本的nodejs。 一、卸载node 如果你已经安装了node,那么你需要先卸载node,如果你没有安装那直接跳过这一步到下一步。 打开控制面板 -> 打开程序和功能 -> 右上角搜索输入node -> 右键卸载 为了确保彻底

HuangsTing的博客 41万+

javascript获取下载文件文件名

var xhr = new XMLHttpRequest(); xhr.open('POST', '/FileManage/File/DownloadFile', true); xhr.responseType = "blob"; var data = new FormData(); data.append('keyValue', keyValue); xhr.onload = function () { var filename; let contentDisposition = xhr.

qq_34059765的博客 4030

BK3437蓝牙5.2芯片实战:手把手教你设计超低功耗智能家居遥控器(附原理图)

本文详细介绍了BK3437蓝牙5.2芯片在超低功耗智能家居遥控器设计中的应用。通过分析芯片的核心优势、硬件设计要点和低功耗固件策略,手把手教你实现日均功耗低于5μA的遥控器原型,并附有原理图设计详解和常见问题解决方案。

tgb34567890的博客 619

threejs开发可视化数字城市效果

theme: condensed-night-purple 灵感图 现在随着城市的发展,越来越多的智慧摄像头,都被互联网公司布到城市的各个角落,举一个例子,一个大楼上上下下都被布置了智能摄像头,用于监控火势,人员进出,工装工牌佩戴等监控,这时候为了美化项目,大公司都会将城市的区域作为对象,进行3d可视化交互,接下来的内容,就是基于以上元素,开发的一款城市数据可视化的demo,包含楼宇特...

weixin_41770018的博客 1580

AJAX -onreadystatechange事件

在ajax中,当发送请求给服务器时,我们基于服务端的回应做一些动作,那该怎么办呢? 我们知道当readyStage每次改变都会触发onreadystatechange事件,readyState包含了XMLRequest的staus属性。 下面是XMLReauest对象的三个重要属性: 属性 描述 onreadystatechange 存储了一个函

243

电竞护航系统成品搭建俱乐部点单小程序开发三角洲小程序搭建

电竞护航系统成品搭建俱乐部点单小程序开发三角洲小程序搭建

dapengglove的博客 1682

XMLHttpRequest 的 readystatechange 事件和 load 事件的区别

分别在 onreadystatechange 和 onload 里写入代码:xhr.onload = function () { console.log(`load:xhr.readyState == ${xhr.readyState} ,xhr.status=${xhr.status}`); } xhr.onreadystatechange = function () { con...

Triumphal 4242

【网络安全】AntSword蚁剑新手快速入门(附实战案例)

蚁剑(AntSword)是一款开源的跨平台WebShell管理工具,它主要面向于合法授权的渗透测试安全人员以及进行常规操作的网站管理员。蚁剑的特点主要有如下几点:1.支持多平台。包括macOS、Linux 32位、Linux 64位、Linux armv7l、Linux arm64、Windows 32位、Windows 64位。2.完善的文档。中国蚁剑文档地址。3.多项功能。文件管理功能、虚拟终端功能、数据库管理功能。4.内置代理功能。

等风来 1万+

【智能座舱】- 智能座舱研究报告合集

智能座舱研究报告合集

零点壹客的博客 1305

Ajax 和 XML: 五种常见 Ajax 模式

 本文介绍了五种常见 Ajax 设计模式。它们在使用 HTML、XML 和 JavaScript 代码从服务器获取数据方面有所不同。我先介绍最简单的模式,它将使用来自服务器的新 HTML 页面来更新页面。         模式1:替换 HTML 片段       最常见的 Ajax 任务也许就是向服务器请求更新的 HTML 并使用它更新部分页面。可能需要周期性地完成这一任务 —— 比如,更新...

ChocooM 320

matlab 计算InSAR干涉相位图的残差点

在理想的情况下,相位场是连续的,图像内沿着任何一条封闭曲线的积分应该为零。这样的连续场称为无旋场,反之为有旋场。但在实际测量过程中,由于噪声、欠采样和系统误差等因素的影响,得到的 InSAR 干涉相位条纹图中往往会出现不连续的相位点,即残差点

点云侠的博客 266

JS ajax 例子

用 js , jQuery 编写 ajax 的样式,三种写法,例子: //用 js 原生写法 function sendGet(url){ xhr.onreadystatechange =function(){ if(xhr.readyState == 4 && xhr.status == 200){ //获取服务器响应 document...

qq_34851243的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

js学习-15(ajax)

js学习-15(ajax) Ajax Ajax是一种在无需加载整个网页的情况下,能够更新部分网页的技术。 通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。 同步: 对于同步的理解: ​ 比如排队去点餐,队列中共有5个人,则需第1个人点完后,服务员将餐品打包后递给第一个人,才能轮到第二个进行点餐,以此类推,直到队列中无人进行排队。 ajax同步请求操作: ​ 1、js发送1个请求去请求数据 ​ 2、js等待后台返回数据 ​

qq_42760119的博客 217

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

JavaScript/JQuery/Ajax部分[面试题]

上一篇文章[Java高级部分之多线程(面试题)] 文章目录1.谈谈你对js的理解2.用js和JQuery怎么进行表单验证3.JavaScript的数据类型有哪些4.ajax的优点5.ajax调试代码查找错误的方法6.ajax中js脚本缓存问题该如何解决?7.同步和异步怎么理解?分别在什么情况下使用?8.Java后台如何接收ajax数据?9.为什么要有JQuery10.JQuery选择器有多少种...

weixin_40791361的博客 1933

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

JavaScript-初识ajax、ajax封装、及json简单实战案例(下)

JavaScript-初识ajax、ajax封装、及json对象使用(下) 一、内涵段子样式与结构 第一步: 运用之前学的内容写好要循环生成的样式与结构 效果图: 第二步: 引入JavaScript-初识ajax、ajax封装、及json对象使用(上)封装的ajax <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewpo

可可的博客 2834

千锋JavaScript学习笔记

千锋JavaScript学习笔记

李英俊小朋友 1372

js ajax 赋值,js设置全局变量ajax中赋值

js设置全局变量,在ajax中给予赋值赋值不上问题解决方案方案一、//在全局或某个需要的函数内设置Ajax异步为false,也就是同步.$.ajaxSetup({async : false});//然后再进行你的Ajax操作$.post(地址, 参数, function(data, status) { if (status == "success") { //赋值给全局变量 } });方案二、$....

weixin_42168230的博客 2460

【15】Ajax

Ajax

Spectre_win的博客 477

15 AJAX

AJAX AJAX 简介 AJAX 是 异步 JavaScript 及 XML(Asynchronous JavaScript and XML)的缩写。AJAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术,一种独立于 Web 服务器软件的浏览器技术。但同时,AJAX不是一种单独的技术,实际上它是几种技术的结合使用。 通过 AJAX,...

weixin_30642029的博客 261

JavaScript、jQuery、Ajax

JavaScript、jQuery1、JavaScript内置对象2、JavaScript HTML DOM对象3、jQuery面试题 1、JavaScript内置对象 2、JavaScript HTML DOM对象 3、jQuery 面试题 1、下来不属于JavaScript语法关键/保留字的是(var、$、function、while) ...

weixin_36020178的博客 469

java中ajax的用途_15-Java-Ajax知识整理

Ajax知识整理一、Ajax概念和原理介绍AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。AJAX 不是新的编程语言,而是一种使用现有标准的新方法。以HttpRequest为核心发送请求和接收响应以JavaScript语言为基础使用XMLHttpRequest以XML或JSON作为数据交互格式以HTML和CSS作为数据展现(...

weixin_35204634的博客 6066

js书写原生ajax,JS 原生ajax写法

//step1.创建XMLHTTPRequest对象,对于低版本的IE,需要换一个ActiveXObject对象var xhr;if (window.XMLHttpRequest) {xhr = new XMLHttpRequest();} else {xhr = new ActiveXObject('Microsoft.XMLHTTP');}//>>step2.使用open方法设置和...

weixin_31430653的博客 307

JavaScript DOM 和 AJAX 入门指南(四)

原文:Beginning JavaScript with DOM Scripting and Ajax 协议:CC BY-NC-SA 4.0 八、Ajax 和 Node.js 的后端交互 你终于读到了我谈论 Ajax 的那一章。好消息是,您可以使用 Ajax 创建非常漂亮的界面,并且可以将 JavaScript 的应用范围扩展到浏览器和当前显示的文档之外。 不太好的消息是,Ajax 依赖于 XMLHTTPRequest 对象(或简称为 XHR)或其微软对等物,并且它被“HTTP”所覆盖。这意味着没有服务

龙哥盟 1294

js中的Ajax经典示例

1 &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1

dearbaba_8520的博客 3539
上一篇: Javascript学习笔记14 JSON
下一篇: Javascript学习笔记16 Comet WebSockets
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值