XMLHttpRequest对象扩展问题
2014-01-23 21:29
190 查看
之前的博客中给大家介绍了创建XMLHttpRequest对象的方式和Get和Post的区别,今天介绍XMLHttpRequest对象扩展问题。
原因:有时XMLHttpRequest请求的结果会缓存在同一个URL中
解决方法:知道了原理后,就要清空缓存,让它每次请求的url不同,每次都去服务器请求,而不是使用缓存。
加时间戳
但是如果访问了一个web服务器,而web服务器返回页面请求另一个服务器就会受到限制
解决方法:在web服务器上安装一个代理,可以通过调用web服务器的代理访问其他服务器。通过代理发去XMlHttpRequest请求,然后代理传递请求到web服务,并且返回客户端应用程序所需要的数据,因为所有数据来自你自己的服务器,所以浏览器不会受到限制
关键代码:
解决XMLHttpRequest对象的扩展问题的方法很多,大家可以查阅资料了解其他方法。
一、缓存
XMLHttpRequest对象在使用时,第一是好的,刷新一下就不行了,清楚缓存再刷新就好了。原因:有时XMLHttpRequest请求的结果会缓存在同一个URL中
解决方法:知道了原理后,就要清空缓存,让它每次请求的url不同,每次都去服务器请求,而不是使用缓存。
加时间戳
function cache(){ if(window.XMLHttpRequest){ cachexmlhttp= new XMLHttpRequest(); if(cachexmlhttp.overrideMimeType){ cachexmlhttp.overrideMimeType("text/xml"); } }else if (window.ActiveXObject){ var activexName = ['MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP']; for(var i= 0;i<activexName.length;i++){ try{ cachexmlhttp= new ActiveXObject(activexName[i]); break; }catch(e){} } } if(cachexmlhttp == undefined || cachexmlhttp == null){ alert("当前浏览器不支持创建XMLHttpRequest对象,请更换浏览器"); return; } cachexmlhttp.onreadystatechange=function(){ if(cachexmlhttp.readyState == 4){ if(cachexmlhttp.status == 200){ var message=cachexmlhttp.responseText; var div=document.getElementById("cachemessage"); div.innerHTML=message; } } };关键代码:
var url="cache"; if(url.indexOf("?")>=0){ //url中存在参数信息 url = url + "&t=" + (new Date()).valueOf(); }else{ url = url + "?t=" + (new Date()).valueOf(); } cachexmlhttp.open("GET",url,true); cachexmlhttp.send(null); }
二、跨域
web浏览器在网络连接的时候会强制执行一个安全限制,其中就包括调用XmlHttpRequest。此安全限制组织脚本或者应用程序连接任何其他的不是来自本域的web服务。如果web程序和程序使用的xml数据来自同一服务器就ok。但是如果访问了一个web服务器,而web服务器返回页面请求另一个服务器就会受到限制
解决方法:在web服务器上安装一个代理,可以通过调用web服务器的代理访问其他服务器。通过代理发去XMlHttpRequest请求,然后代理传递请求到web服务,并且返回客户端应用程序所需要的数据,因为所有数据来自你自己的服务器,所以浏览器不会受到限制
关键代码:
if(url.indexOf("http//")== 0){ url.replace("?","&"); url="Proxy?url" + url; }
解决XMLHttpRequest对象的扩展问题的方法很多,大家可以查阅资料了解其他方法。
相关文章推荐
- 解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题
- XMLHttpRequest对象解决中文乱码问题
- 创建ajax对象及解决不同浏览器对XMLHttpRequest对象的兼容问题
- 关于Ajax中XMLHttpRequest对象的status属性值问题
- 解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题
- 解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题
- 使用XMLHttpRequest对象时遇到的问题
- XMLHttpRequest对象responseText属性的兼容性问题
- Chrome浏览器扩展开发系列之十五:跨域访问的XMLHttpRequest对象
- Chrome浏览器扩展开发系列之十五:跨域访问的XMLHttpRequest对象
- 使用xmlHttpRequest对象完成异步交互时,遇到的问题
- AJAX技术使用XMLHttpRequest对象传递参数的中文乱码问题
- 解析ajax核心XMLHTTPRequest对象的创建与浏览器的兼容问题
- 在微信中调用ajax出现的问题,XMLHttpRequest对象没有初始化
- XHR——XMLHttpRequest对象
- Ajax学习(三)——XMLHttpRequest对象的五步使使用方法
- xmlhttprequest对象
- AJAX中同时发送多个请求XMLHttpRequest对象处理方法
- AJAX 多次发送异步请求的 XmlHttpRequest 对象的设置
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)