随笔分类 -  Ajax/Fetch

1 2 下一页

HTTP状态管理机制之Cookie
摘要:一、cookie 起源 cookie 最早是网景公司的雇员 Lou Montulli 在1993年3月发明,后被 W3C 采纳,目前 cookie 已经成为标准,所有的主流浏览器如 IE、Chrome、Firefox、Opera 等都支持。 cookie 的诞生是由于 HTTP 协议的天生缺陷,HT 阅读全文

posted @ 2016-01-14 08:26 snandy 阅读(5256) 评论(0) 推荐(1) 编辑

Fetch:下一代 Ajax 技术
摘要:Ajax,2005年诞生的技术,至今已持续了 10 年。它是一种在客户端创建一个异步请求的技术,本质上它不算创新,是一组技术的组合。它的核心对象是 XMLHttpRequest。 简单回顾下历史 使用步骤大概如下 以上可以看出,XHR 使用 onXXX 处理,典型的 "事件模式"。 Fetch 目前 阅读全文

posted @ 2015-12-28 08:35 snandy 阅读(27273) 评论(17) 推荐(6) 编辑

XMLHttpRequest部分浏览器中不支持put/delete
摘要:后端同事想采用REST风格,hailiang在看jQuery文档时发现的$.ajax不是所有浏览器中都支持put/delete。但没有指出具体是那些浏览器。我新建了一个Java WEB项目测试所有浏览器,但都支持put和delete。测试浏览器版本如下Firefox 11Chrome 18Safari 5Opera11.62IE9 (含ie7,8模式)IE6 (IETester及虚拟机中的ie6)记录之!相关:http://www.douban.com/group/topic/5020441/http://annevankesteren.nl/2007/10/http-method-suppo 阅读全文

posted @ 2012-04-20 16:41 snandy 阅读(8544) 评论(4) 推荐(2) 编辑

ajax后退解决方案(五)
摘要:目录Ajax后退解决方案一Ajax后退解决方案二Ajax后退解决方案三Ajax后退解决方案四Ajax后退解决方案五五、使用history.pushState产生历史,popstate事件处理后退 0 0 pushState和popstate是HTML5为history对象新增的方法和事件。虽然... 阅读全文

posted @ 2011-09-21 07:41 snandy 阅读(8726) 评论(1) 推荐(2) 编辑

ajax后退解决方案(四)
摘要:目录Ajax后退解决方案一Ajax后退解决方案二Ajax后退解决方案三Ajax后退解决方案四Ajax后退解决方案五三、通过修改location.hash产生历史,hashchange事件处理后退 0 0 每次ajax操作去改变location.hash的值,每次修改后地址栏均会有所体现。在wi... 阅读全文

posted @ 2011-09-20 07:51 snandy 阅读(8796) 评论(5) 推荐(1) 编辑

ajax后退解决方案(三)
摘要:目录Ajax后退解决方案一Ajax后退解决方案二Ajax后退解决方案三Ajax后退解决方案四Ajax后退解决方案五三、使用iframe,通过修改iframe.src产生历史,回调写在iframe对应的html页面中 0 0 与方案2相同也是使用iframe.src来产生历史,也需要一个单独的h... 阅读全文

posted @ 2011-09-20 07:43 snandy 阅读(7575) 评论(6) 推荐(2) 编辑

ajax后退解决方案(二)
摘要:目录Ajax后退解决方案一Ajax后退解决方案二Ajax后退解决方案三Ajax后退解决方案四Ajax后退解决方案五二、使用iframe,通过修改iframe.src产生历史 0 0 较上一篇多了个blank.html,是一个空html架子,没有JS逻辑代码,如下blank.html 每次aj... 阅读全文

posted @ 2011-09-19 07:45 snandy 阅读(9329) 评论(5) 推荐(2) 编辑

ajax后退解决方案(一)
摘要:目录Ajax后退解决方案一Ajax后退解决方案二Ajax后退解决方案三Ajax后退解决方案四Ajax后退解决方案五一、使用iframe,通过document.write产生历史 0 0 点击按钮后更新页面DOM(模拟ajax提交),会发现浏览器后退按钮可用了。点击后退,可返回到前一个状态。这种... 阅读全文

posted @ 2011-09-18 08:42 snandy 阅读(15843) 评论(6) 推荐(5) 编辑

跨域请求之JSONP 三
摘要:script请求返回JSON实际上是脚本注入。它虽然解决了跨域问题,但它不是万能的。不能接受HTTP状态码不能使用POST提交(默认GET)不能发送和接受HTTP头不能设置同步调用(默认异步)...其最严重的就是不能提供错误处理,如果请求的代码正常执行那么会得到正确的结果。如果请求失败,如404,5... 阅读全文

posted @ 2011-05-05 11:07 snandy 阅读(8662) 评论(10) 推荐(3) 编辑

跨域请求之JSONP 二
摘要:续上篇,加两个实用功能1,增加data属性,请求参数2,增加scope属性,可以让回调函数在指定的上下文中执行接口如下Sjax.load(url, { data // 请求参数 (键值对字符串或js对象) success // 成功后回调函数 scope // 回调函数执行上下文 timest... 阅读全文

posted @ 2011-05-04 09:29 snandy 阅读(6688) 评论(1) 推荐(3) 编辑

跨域请求之JSONP 一
摘要:跨域请求的方式有很多种,iframedocument.domainwindow.namescriptXDomainRequest (IE8+)XMLHTTPRequest (Firefox3.5+)postMessage (HTML5)后台代理...它们有各自的优缺点,返回的数据格式也各不同,应根据... 阅读全文

posted @ 2011-05-03 06:40 snandy 阅读(39785) 评论(9) 推荐(9) 编辑

IE8+中XMLHttpRequest支持timeout属性及ontimeout事件
摘要:不久前我写了一个Ajax工具库。这篇是对请求超时处理的补充。IE8/9的XMLHttpRequest对象已经增加这方面的支持了。IE10 pre1测试也支持。如果W3C能将这两个东东标准化多好啊,不用那么的hack方式实现了。XMLHttpRequest的timeout属性可以设置,表示在等待响应多少毫秒之后终止。 即如果在规定的时间内浏览器没有收到响应,那么就触发timeout事件,给xhr.ontimeout赋值为一个响应函数后可被执行。主要代码如下xhr.onreadystatechange = function(){ if(xhr.readyState == 4){ try{ var 阅读全文

posted @ 2011-05-02 08:54 snandy 阅读(7104) 评论(0) 推荐(0) 编辑

JS Queue LazyLoad 之二
摘要:上一篇实现了对多个JS文件的顺序加载,这篇再完善丰富一下。加入回调函数,即每个JS文件加载后都有一次回调机会,这个回调是取决于使用者的。也就是说使用者可以配置是否回调,甚至指定某一个或多个回调。非常灵活,可以根据项目需求决定那些资源JS下载后进行回调。此外这篇还解决了重复资源加载问题。接口如下 QueueLazyLoad.js([ { url // JS路径 fn // 回调函数 scope // 回调函数执行上下文,默认为window }, ... ]);示例 QueueLazyLoad_0.2.js loading a.js ag... 阅读全文

posted @ 2011-05-02 05:29 snandy 阅读(2536) 评论(3) 推荐(2) 编辑

JS Queue LazyLoad 之一
摘要:前面三篇实现了多个JS并行加载,即各个JS文件相互不依赖。实现时仅顺序将其插入到head中。直至全部插入完毕才进行回调。并行下载的好处是效率较高。但有时我们需要加载的JS模块之间存在相互依赖关系。如a,b,c三个JS文件。b.js中代码依赖于a中定义的某些函数或类,c.js又依赖b.js中的函数或类,而c中具有一个入口函数。这时得保证a,b,c顺序加载,否则如果c早于b或a先加载完,则可能会出现xx未定义之类的错误提示。顺序加载的缺点就是效率较低,因为必须一个个的下载。Queue LazyLoad 0.1版接口非常之简单,如下传个数组url即可 QueueLazyLoad.js([ { ... 阅读全文

posted @ 2011-05-01 15:38 snandy 阅读(3102) 评论(18) 推荐(1) 编辑

JS/CSS module LazyLoad 之三
摘要:在开始这篇前,有两个小问题须说明一下情况一LazyLoad.js(['a.js','a.js'],function(){});有人会问为什么要在页面中引入两次a.js? 我也想问。其实是多余的。但有人就喜欢这么用,那怎么办。只能凉拌了。我可以在内部对数组中重复元素去重下。但这无疑增加了LazyLoad.js的代码量,或者说我更愿意看到不要这么去写。当然我自己用肯定不会这么写的。情况二LazyLoad.js(['a.js'], function(){});LazyLoad.js(['b.js'], function(){});这种写 阅读全文

posted @ 2011-05-01 05:48 snandy 阅读(2770) 评论(19) 推荐(4) 编辑

JS/CSS module LazyLoad 之二
摘要:上一篇完成的JS的按需加载,这篇添加个新方法css,完成对CSS文件的加载。接口与JS相同,示例如下LazyLoad.css(['a.css', 'b.css', 'c.css'], function(){ console.log('css模块加载完毕');});Firebug中效果如下,上一篇对JS的加载实现是通过script元素,css则是通过link元素。而link元素仅IE6/7/8/9和Opera中支持其onreadystatechange事件,Firefox/Safari/Chrome既不支持onreadystatec 阅读全文

posted @ 2011-04-30 12:27 snandy 阅读(2136) 评论(2) 推荐(2) 编辑

JS/CSS module LazyLoad 之一
摘要:随着web app中JS越来越多,有时页面首次加载时有很多JS并没有用到。这时为了提高下载速度,提高页面渲染效率就需要让这部分暂时不用的JS延迟加载,即只在用到它们的时候再下载。这里会先实现一个最简单JS的惰性加载。后续几篇会逐步加强功能直至一个完整的JS/CSS模块加载库。这个系列里我不会实现队列,即各个JS文件是并行下载的,只有当多个JS全部下载后才执行回调。当然在第二个系列JS Queue LazyLoad中会实现各个JS文件顺序加载,每个JS文件下载后都有一次回调机会。这两种方式有各自的应用场景。先给出使用接口LazyLoad.js( urls // js文件路径 fn // 全部加载 阅读全文

posted @ 2011-04-30 10:03 snandy 阅读(3848) 评论(14) 推荐(0) 编辑

新API解析JSON-Ajax之七
摘要:这是Ajax系列的最后一篇。ECMAScript 5发布有段时间了,其中就包括了解析JSON的原生API-JSON.parse。许多浏览器已经支持了。主流JS库如JQuery,Ext,Prototype都优先使用JSON.parse,不支持该方法的浏览器则使用new Function或eval。 为何优先使用JSON.parse,我想一个就是性能,原生的总是要快一些吧。此外JSON.parse较eval也更安全。这里也当然不能落后了,优先使用JSON.parse,不行再用new Function方式。最后失败了会给failure的第二个参数msg赋值为"parse json erro 阅读全文

posted @ 2011-04-27 08:09 snandy 阅读(3682) 评论(6) 推荐(6) 编辑

创建xhr时异常处理-Ajax之六
摘要:前面几篇一直采用最精简的方式创建Ajax的核心XMLHttpRequest对象var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');没有考虑其可能出现的异常,即创建失败。其实个人认为以上创建方式创建失败的几率非常之少,起码在IE6/7/8/Firefox/Safari/Chrome/Opera如此,其它浏览器就不知了。但作为一个基础库还是完善下,如果出现创建失败,failure的第二个参数msg将会被赋值为"create xhr f 阅读全文

posted @ 2011-04-27 06:17 snandy 阅读(5412) 评论(2) 推荐(1) 编辑

处理超时-Ajax之五
摘要:上一篇只是检查是否超时,超时后却不做任何处理。这里如果超时,会给failure第二个参数msg赋值为“request timeout”。这样使用者能清楚的知道一次HTTP请求的细节。实现细节较为诡异,慢慢体会。这里timeout的效果和JQuery,Ext是一样的。如下Ajax.text('../servlet/Ajax',{ timeout : 2000, success : function(result){}, failure : function(xhr,msg){ alert(msg); }});完整源码Ajax =function(){ function reque 阅读全文

posted @ 2011-04-26 08:18 snandy 阅读(8561) 评论(1) 推荐(5) 编辑

1 2 下一页