xhr(二)

作者: wuxuan94 | 来源:发表于2017-12-01 14:57 被阅读0次

一、xhr超时
XHR对象的timeout属性等于一个整数,表示多少毫秒后,如果请求仍然没有得到结果,就会自动终止。该属性默认等于0,表示没有时间限制。
如果请求超时,将触发ontimeout事件(IE8不支持)

var xhr = new XMLHttpRequest();
xhr.open('post','test.php',true);
xhr.ontimeout = function(){
    console.log('The request timed out.');
}
xhr.timeout = 1000;
xhr.send();

二、跨域请求

xhr.withCredentials = true;
xhr.setRequestHeader('X-Request-With', "XMLHttpRequest");

只有客户端设置这个值还不能跨域,还需要服务端同意才行。

Access-Control-Allow-Credentials: true;

还有一点要注意的,返回头Access-Control-Allow-Origin的值不能为星号,必须是指定的域,否则cookie等认证信息也是发送不了。

三、优化
使用AJAX接收数据时,由于网络和数据大小的原因,并不是立刻就可以在页面中显示出来。所以,更好的做法是,在接受数据的过程中,显示一个类似loading的小图片,并且禁用按钮;当数据完全接收后,再隐藏该图片,并启用按钮

四、其他
1.停止当前请求

xhr.abort();

2.把HTTP请求的所有响应首部作为键/值对返回

xhr.getAllResponseHeaders();

3.返回指定首部的串值

xhr.getResponseHeader("header");

4.把指定首部设置为所提供的值

xhr.setRequestHeader("header", "value");//在设置任何首部之前必须先调用open()。设置header并和请求一起发送 ('post'方法一定要 )

5.监听文件上传进度

xhr.upload.addEventListener("progress", function(e){...}, false);

相关文章

  • xhr(二)

    一、xhr超时XHR对象的timeout属性等于一个整数,表示多少毫秒后,如果请求仍然没有得到结果,就会自动终止。...

  • Ajax-----XHR

    一:概念: 以前没有XHR对像,IE5,6就没有 二:创建XHR对像 兼容性写法如下: 三:XHR发送请求 四:X...

  • XMLHttpRequest对象

    一、创建XMLHttpRequest 二、XHR的使用 open() onreadystatechange ()创...

  • AJax 第一天

    1,创建一个xhr对象var xhr=new XMLHttpRequest2,监听xhr状态的改变xhr.onre...

  • 简单的分析下XMLHttpRequest对象

    创建xhr对象 关于xhr对象属性 追踪xhr发送ajax的状态xhr.readyState对象即是当前请求对象的...

  • XMLHttpRequest

    事件 xhr.onabort() 资源加载中断xhr.onerror() 发生错误xhr.onload() ...

  • Ajax、JSONP常用句式

    xhr=new XMLHttpRequest;}xhr.onreadystatechange=function()...

  • xhr

    XMLHttpRequest对象(简称XHR)是ajax技术的核心,ajax可以无刷新更新页面得益于xhr。一、创...

  • XHR

    varXHRRequest;//创建XHRfunction createXHR(){ if(typeof XML...

  • ajax如何实现?readyState五种状态的含义。

    // 创建连接let xhr = null;if ( window.XMLHttpRequest ){xhr = ...

网友评论

      本文标题:xhr(二)

      本文链接:https://www.haomeiwen.com/subject/ubizvxtx.html