随笔分类 -  JavaScript

代替jquery $.post 跨域提交数据的N种形式
摘要:跨域的N种形式:1.直接用jquery中$.getJSON进行跨域提交 优点:有返回值,可直接跨域; 缺点:数据量小; 提交方式:仅get (无$.postJSON) $.getJSON("http://www.sendnet.cn/?callback=?" , { UserId: ... 阅读全文
posted @ 2014-08-24 23:57 davidkam 阅读(359) 评论(0) 推荐(0)
Ajax轮询以及Comet模式—写在Servlet 3.0发布之前(转)
摘要:2008 年的夏天,偶然在网上闲逛的时候发现了 Comet 技术,人云亦云间,姑且认为它是由 Dojo 的 Alex Russell 在 2006 年提出。在阅读了大量的资料后,萌发出写篇 blog 来说明什么是 Comet 的想法。哪知道这个想法到了半年后的今天才提笔,除了繁忙的工作拖延外,还有 Comet 本身带来的困惑。Comet 能带来生产力的提升是有目共睹的。现在假设有 1000 个用户在使用某软件,轮询 (polling) 和 Comet 的设定都是 1s 、 10s 、 100s 的潜伏期,那么在相同的潜伏期内, Comet 所需要的带宽更小,... 阅读全文
posted @ 2013-12-11 08:57 davidkam 阅读(508) 评论(0) 推荐(0)
HTTP长连接(Comet)实现方式示例
摘要:昨天看了comet的介绍后,虽然大概知道了comet的原理,不过没实际用过还是不太清楚,于是今天又在网上翻了一下别的网友共享的comet实现http长连接的例子,在Comet Server Push 技术介绍一文中分别提到了 ”基于长轮询(long polling)“、”基于iframe“、”基于流(stream)“三种实现comet的方式,下面我将网上找到的对应的例子链接做个汇总,就当目录吧,留作以后看基于长轮询(long polling)的特点1. 服务器端会阻塞请求直到有数据传递或超时才返回。2. 客户端响应处理函数会在处理完服务器返回的信息后,再次发出请求,重新建立连接。3. 当客户端 阅读全文
posted @ 2013-12-11 02:02 davidkam 阅读(3549) 评论(1) 推荐(1)
讲解HTML服务器推送相关技术知识(转)
摘要:1. 为什么需要服务器推送?最大的优点:实时健康知识平台重庆男科医院重庆妇科医院适用场景:实时股票价格、商品价格、实时新闻、Twitter/weibo timeline、基于浏览器的聊天系统2. Web交互的发展历程?F5手动刷新 --> AJAX轮询(Polling) --> Comet实时更新 --> HTML5实时通信 随着AJAX的流行,当前大部分网站都采取轮询的方式进行更新,但是这种方式的效率是十分低下的;一方面,服务器端不是总有数据更新,所以每次请求不一定都有更新;另一方面,当发起请求的客户端数量增加,服务器端的接受的请求数量会大量上升,无形中就增加了服务器的压力 阅读全文
posted @ 2013-12-11 01:09 davidkam 阅读(259) 评论(0) 推荐(0)
Web通信之:长轮询(long-polling)(转)
摘要:Web通信之:长轮询(long-polling) “轮询”是个耐人寻味的词,第一次看到它的时候我就直接理解为“轮流查询”了。但是看到了英文才知道这个是网络通信专业的术语。轮询,其实就是一群人在排队买东西。polling这个词也生动的形容了这个的状态。就像这样 轮询如果是排队买东西,那么长轮询就是排队上厕所。买东西的话,丢下钱就可以拿东西走了,但是上厕所就不一样,有些人说不定便秘半个小时都出不来。如果只用轮询去做Web通信,那服务器就鸭梨山大了,它需要一直做的接受和断开HTTP请求的操作。就像卖热销产品的店员就没有公共厕所管理员那么轻松。 服务器就是厕所,需要上厕所的就是客户端的XHR对象... 阅读全文
posted @ 2013-12-11 01:05 davidkam 阅读(642) 评论(1) 推荐(0)
Web 通信 之 长连接、长轮询(long polling)(转)
摘要:基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性。一、什么是长连接、长轮询?用通俗易懂的话来说,就是客户端不停的向服务器发送请求以获取最新的数据信息。这里的“不停”其实是有停止的,只是我们人眼无法分辨是否停止,它只是一种快速的停下然后又立即开始连接而已。二、长连接、长轮询的应用场景长连接、长轮询一般应用与WebIM、ChatRoom和一些需要及时交互的网站应用中。其真实案例有:WebQQ、Hi网页版、Facebook IM等。如果你对服务器端的反向Ajax感兴趣,可以参考这篇文章 D 阅读全文
posted @ 2013-12-11 00:54 davidkam 阅读(286) 评论(0) 推荐(0)
轮询和长轮询的优缺点
摘要:在网上查了一下资料,发现轮询和长轮询还有不同的定义:轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。优点:后端程序编写比较容易。缺点:请求中有大半是无用,浪费带宽和服务器资源。实例:适于小型应用。长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求。优点:在无消息的情况下不会频繁的请求。缺点:服务器hold连接会消耗资源。实例:WebQQ、Hi网页版、Facebook IM。另外,对于长连接和socket连接也有区分:长连接:在页面里嵌入一个隐蔵ifram 阅读全文
posted @ 2013-12-11 00:47 davidkam 阅读(5537) 评论(0) 推荐(1)
长轮询和Comet
摘要:长轮询方式是由前端定时发起AJAX请求,若请求到数据则把数据显示出来。comet方式是由客户端与服务器端发起一个长连接,然后客户端通过监听事件的方式,来对服务器端返回的数据作出响应和处理。实时性要求不高使用长轮询,比如微博;实时性要求较高使用comet,比如聊天室。用firebug调试一下weibo.com的网络请求可以发现,微博用的是轮询来实现消息提醒的,应该是用set timer隔个30秒或一分钟去服务器进行查询。和即时通信的web应用不同,微博提醒实时性要求不高,所以用轮询方式比较合理,没有必要用长连接。没错,不是非要使用长连接的。长连接对象保存在服务器,要占用一定的内存。降低了服务器的 阅读全文
posted @ 2013-12-11 00:23 davidkam 阅读(441) 评论(0) 推荐(0)
分享一些Comet开发经验
摘要:前言本comet技术主要用于数据库持久层的 穿越防火墙 远程访问。只要有一台中继网站,任意地点的数据库都能被访问。Comet概念介绍WebIM、网页的客服、meebo等大家听说过了。最近还有个兄弟开源了个网页客服叫,PowerTalk。各位可以搜索一下。这些最新最炫的技术,用了一个叫comet的架构。comet对于我来说= http长连接这个是一个通俗的解释。老外最擅长就就是发明概念,生怕别人忘了自己的存在。因此把一个很简单的东西搞了一个摸不着边的名词:Comet。Comet思想怎么来先抛开comet,给个案例分析:局域网(防火墙内)的客户端要与外界联系,如何做到?必然想到了客户端主动发出申请 阅读全文
posted @ 2013-12-10 23:06 davidkam 阅读(345) 评论(0) 推荐(0)
WebSocket
摘要:1 2 3 4 HTTP Polling 5 6 23 24 25 26 27 28 Comet.html 1 2 3 4 5 6 7 8 9 35 36 Socket.htmlWebSocket 阅读全文
posted @ 2013-12-10 11:32 davidkam 阅读(261) 评论(0) 推荐(0)
ajax轮询
摘要:oa.comet = function (id) { if (oa.id == 0) oa.id = id; $.ajax({ url: '/comet.asy?id=' + id, cache: false, dataType: 'json', error: function (request, status, thrown) { setTimeout(oa.comet, 8000 * oa.errTimes); oa.errTimes++; }, //出错 8秒之后自动连接服务器 success: function (data) { if (data) { 阅读全文
posted @ 2013-12-10 11:18 davidkam 阅读(201) 评论(0) 推荐(0)
js 中键值对 数组长度获取方法
摘要:<script type="text/javascript"> var v = [ {"CN " : "china "}, {"US " : "usa "}, {"UK " : "english "} ]; alert(v.length); // 获取数组长度 alert(v[0]["CN "]); //以键取值 alert(v[1]["US "]); //以键取值 alert(v[2]["UK 阅读全文
posted @ 2013-02-05 21:56 davidkam 阅读(1212) 评论(0) 推荐(0)
解决IE下javascript:void(0)会触发window.onbeforeunload事件
摘要:先看看问题现象<script type="text/javascript">window.onbeforeunload=function(){ alert("onbeforeunload event"); //return false;}</script><a href="#" onclick="return true;">测试1</a><br/><a href="javascript:void(0)" onclick=" 阅读全文
posted @ 2013-01-29 10:11 davidkam 阅读(653) 评论(0) 推荐(0)
jQuery 中使用 JSON
摘要:jQuery 中使用 JSONJSON 格式json 是 Ajax 中使用频率最高的数据格式,在浏览器和服务器中之间的通讯可离不开它。JSON 的格式说明可以在可以这里看到,非常详细,还是中文的。JSON 格式说明需要特别注意的是,在 JSON 中的属性名是需要使用引号引起来的。jQuery 中使用 JSONjQuery 是现在使用广泛的脚本库,那么,在 jQuery 中如何使用 JSON 呢?解析 JSON在 jQuery 中已经提供了对于解析 JSON 的内在支持,jQuery.parseJSON 函数提供了解析的支持,详细的说明见这里。var obj = jQuery.parseJSON 阅读全文
posted @ 2013-01-26 18:57 davidkam 阅读(236) 评论(0) 推荐(0)
JavaScript 关闭窗口事件
摘要:方式一:(适用与IE浏览器,而且刷新不提示,只在点击浏览器关闭按钮的时候提示) <script type="text/javascript"> window.onbeforeunload=onclose; function onclose() { if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey) { return "您要离开吗?"; } } </script> ---------------------- 阅读全文
posted @ 2013-01-10 14:14 davidkam 阅读(678) 评论(0) 推荐(0)
JQuery操作select(转)
摘要:jQuery获取Select选择的Text和Value:语法解释:1. $("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发2. var checkText=$("#select_id").find("option:selected").text(); //获取Select选择的Text3. var checkValue=$("#select_id").val(); //获取Select选择的Value4. var check 阅读全文
posted @ 2012-12-13 11:48 davidkam 阅读(172) 评论(0) 推荐(0)
JavaScript闭包 懂不懂由你反正我是懂了(转)
摘要:如果你不能向一个六岁的孩子解释清楚,那么其实你自己根本就没弄懂。好吧,我试着向一个27岁的朋友就是JS闭包(JavaScript closure)却彻底失败了越来越觉得国内没有教书育人的氛围,为了弄懂JS的闭包,我使出了我英语四级吃奶的劲去google上搜寻着有关闭包的解释,当我看到stackoverflow上这一篇解答,我脑中就出现了一句话:就是这货没跑了! 不才译文见下,见笑了。 Peter Mortensen问: 就像老Albert所说的,“如果你不能向一个六岁的孩子解释清楚,那么其实你自己根本就没弄懂。”好吧,我试着向一个27岁的朋友就是JS闭包(JavaScript closure) 阅读全文
posted @ 2012-09-08 09:18 davidkam 阅读(172) 评论(0) 推荐(0)
JavaScript闭包(转)
摘要:一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。Js代码 var n=999; function f1(){ alert(n); } f1(); // 999另一方面,在函数外部自然无法读取函数内的局部变量。 Js代码 function f1(){ var n=999; } alert(n); // error这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变... 阅读全文
posted @ 2012-09-08 09:08 davidkam 阅读(166) 评论(0) 推荐(0)