原生js--http请求
1、终止请求和超时
终止请求XMLHttpRequest对象提供abort方法,调用该方法时触发abort事件
XHR2提供了timeout属性,当超时发生时触发timeout事件。但浏览器尚不支持自动超时。可以使用setTimeout模拟实现。
例如:
function timedGetText( url, time, callback ){
var request = new XMLHttpRequest();
var timeout = false;
var timer = setTimeout( function(){
timeout = true;
request.abort();
}, time );
request.open( "GET", url );
request.onreadystatechange = function(){
if( request.readyState !== 4 ) return;
if( timeout ) return;
clearTimeout( timer );
if( request.status === 200 ){
callback( request.responseText );
}
}
request.send( null );
}
2、跨域HTTP请求
XHR2通过在HTTP响应中选择发送合适的CORS(Cross-Origin Resource Sharing),允许跨域访问网站,Firefox、Chrome等都已经支持CORS,IE8通过SDomainRequest对象支持。但这种跨域请求不会包含cookie和HTTP身份验证令牌,可以通过设置withCredentials为true才能实现包含以上信息。
3、借助script发送HTTP请求(jsonp)
支持jsonp的服务不会强制指定客户端必须实现的回调函数名称
使用script元素发送JSON请求
function getJSONP( url, callback ){
var cbnum = "cb" + getJSONP.counter++;
var cbname = "getJSONP." + cbnum;
if( url.indexOf( "?" ) === -1 ){
url += "?jsonp=" + cbname;
}else{
url += "&jsonp" + cbname
}
var script = document.createElement( "script" );
// 回调函数
getJSONP[cbnum] = function( response ){
try{
callback( response );
}finally{
delete getJSONP[num];
script.parentNode.removeChild( script );
}
};
script.src = url;
document.body.appendChild( script );
}
getJSONP.counter = 0;
原生js--http请求的更多相关文章
- 原生js 异步请求,responseXML解析
异步更新原理:用XMLHTTP发送请求得到服务器端应答数据,在不重新载入整个页面的情况下,用js操作Dom最终更新页面1.创建XMLHttp请求协议 function createXMLHttpReq ...
- 原生js ajax请求
什么是ajax AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新. 这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新, ...
- 原生JS Ajax 请求
var username = document.getElementById('username').value; var password = document.getElementById('pa ...
- 原生js发送ajax请求
堕落了一阵子了,今天打开博客,发现连登录的用户名和密码都不记得了.2016年已过半,不能再这么晃荡下去了. 参加了网易微专业-前端攻城狮 培训,目前进行到大作业开发阶段,感觉举步维艰.但是无论如何,不 ...
- AJAX请求和跨域请求详解(原生JS、Jquery)
一.概述 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. AJAX = 异步 JavaScript 和 XML,是一种用于创建快速动态网页的技术.通过在后台与服务器进行少量数 ...
- 原生JS实现Ajax及Ajax的跨域请求
前 言 如今,从事前端方面的程序猿们,如果,不懂一些前后台的数据交互方面的知识的话,估计都不太好意思说自己是程序猿.当然,如今有着许多的框架,都有相对应的前后台数据交互的方法. ...
- python的前后端分离(一):django+原生js实现get请求
一.django新建项目和应用 参考:https://segmentfault.com/a/1190000016049962#articleHeader2 1.创建项目 django-admin st ...
- 原生js实现类的添加和删除,以及对数据的add和update、view ,ajax请求 ,页面离开的操作
1 类操作 function hasClass(cla, element) { if(element.className.trim().length === 0) return false; var ...
- 原生JS实现ajax 发送post请求
1. [代码]原生JS实现ajax 发送post请求 <script> var oStr = ''; var postData = {}; var oAjax = null; //post ...
- ajax请求的原生js实现
我们使用ajax请求一般都用的jQuery, axios封装好了的api, 那么如果只能用原生js, 我们该如何操作了? 上代码. 我们在同目录下写好一个json文件(data.json)用于请求测试 ...
随机推荐
- vegan 包进行Adonis 分析
Adonis 分析 是基于距离矩阵的多变量方差置换分析, 代码示例: 默认使用bray 距离来计算样本间的距离矩阵 参考资料: https://www.rdocumentation.org/packa ...
- Java之ReentrantLock公平锁和非公平锁
在Java的ReentrantLock构造函数中提供了两种锁:创建公平锁和非公平锁(默认).代码如下: public ReentrantLock() { sync = new NonfairSync( ...
- utf8_unicode_ci与utf8_general_ci的区别
From: http://www.chinaz.com/program/2010/0225/107151.shtml 当前,utf8_unicode_ci校对规则仅部分支持Unicode校对规则算法. ...
- com.alibaba.com.caucho.hessian.io.SerializerFactory getDeserializer
2016-1-27 14:40:25 com.alibaba.com.caucho.hessian.io.SerializerFactory getDeserializer 警告: Hessian/B ...
- Compile cpp File Manually without IDE under Mingw Environment
环境准备. 安装mingw并设置好系统PATH. mingw.windows下的GUN编程环境. 系统变量的作用--可运行文件的搜索路径. 这样在cmd直接输入g++就能调用到D:\Program F ...
- 输出到网页前台js代码中包含单引号的处理方法
描述:后台输出js到前台,如 <script type="text/javascript"> //<![CDATA[ var aStepD ...
- EJB与JPA的关系
转自:http://www.cnblogs.com/o-andy-o/archive/2012/04/17/2453537.html JPA是基于Java持久化的解决方案,主要是为了解决ORM框架的差 ...
- 【ML】人脸识别
https://github.com/colipso/face_recognition https://medium.com/@ageitgey/machine-learning-is-fun-par ...
- docker开启api端口,docker启用加速
此篇是针对centos6的docker,注意ubantu和centos7的会有区别. 需要在docker配置文件中修改信息 centos中是这个文件 /etc/sysconfig/docker,Ubu ...
- js中对象的深度复制
// 对象的深度复制 cloneObj(oldObj) var cloneObj = function (obj) { var newObj = {}; if (obj instanceof Arra ...