大猫の意淫筆記

jQuery $.ajax .abort()

Wednesday, August 26th, 2009

cache

花了一晚上看jQuery的ajax,然后基于空帷同学的CGI写了个产生指定大小 css js img 填擦车(Cache)的页面 http://cache.if.vc

但是做.abort()中断http请求的时候遇到问题
查了jQuery 1.3 API 参考文档中文版 未果

最后在老外那里找到解决方案:

把XHR对象丢给current_request, 再调用current_request的.abort()

current_request = $.get('/events', { '七夕': '发春' },function(resp) { alert(resp); });
if(current_request) {current_request.abort();}

简单的AJAX真简单... ... 好好学习ing
BTW: box和文字的阴影都是CSS3,firefox效果最好~想学习的话
手头肯定要必备一本新鲜出炉的CSS 3.0 参考手册 (中文版)!

七夕情人节, 大家都有女盆友... ... 好羡慕~~
当然,我也有女友... 各位节日快乐!

监视输入频率控制AJAX请求数

Thursday, October 9th, 2008

AJAX小伎俩
大家都知道AJAX是非常好玩的东东,这几天俺在写表单验证JS的时候遇到了一问题:
在注册表单输入用户名的时候,俺采用了onkeyup事件来触发AJAX校验,就是说每打一个字,表单就会去服务器那问一下是不是这用户名可以用,Justin章同学提出这样子服务器负担会比较大,比如疯狂打100个字就会发送100个请求,而Peter饭同学建议通过监视输入频率来控制请求数

具体实现效果描述如下:

两次击键间隔少于1秒不会发送请求,直到停顿时间超过1秒后发送一坨请求

逻辑如下:

设置一个timer倒计时1秒,每次击键都会初始化timer并重新开始倒计时

在骚扰花花同学一通后得出代码如下:
var timer;
function delay() {
if (timer) clearTimeout(timer);
timer = setTimeout(AJAX,1000);
}
function AJAX(){alert("假装我是AJAX")}
注意setTimeout的函数调用在IE下是不能传递变量的,比如不能写成 setTimeout(AJAX('cat'),1000)

例子如下:
http://ooxx.me/lab/ajaxForm/landingpage.htm
有firebug的同学打开Console可以看到类似 GET http://ooxx.me/lab/ajaxForm/ajaxProxy_id.php?id=bigcat&timeStamp= 字样,表示发送了http请求,在连续输入时,是不会发送的
哈,这里还有个AJAX跨域的小东东,我用的是一个PHPproxy
点我查看源代码另存为.php,把$proxy_url改成你的AJAX服务器端就可以实现跨域使用了