Archive for the ‘Javascript’ Category

翻页保持checkbox勾选状态的实现

Wednesday, August 20th, 2008

本博客所有原创文章采用知识共享署名-非商业性使用-相同方式共享,转载请保留链接http://chaoqun.17348.com/2008/08/pager_with_checkbox_on/ 之前的一个项目,给新浪空间做的音乐控件,大家可以登录上去看一下,个人感觉产品设计不错,我现在天天就在上面在线听音乐,大家可以测试一下里面的搜索效果,在搜索结果的第一页选择一些歌曲(或者全选),然后翻任意页,再选,再翻任意页,再选,后头查一下你选择过了的页面,看看是不是你之前选择过的歌曲还保留着,下面就说一下这个的实现方式,javascript部分居于mootools。 实现原理: 每一个分页都包含在一个id为page+页码的div中,翻到其他页时,隐藏当前页,首先判断目标页是否已经加载过,如果没有就通过ajax去获取页面,同样包含在一个page+页面的div中,等于说所有的分页都在页面中,只不过非当前页的div都设为display=none了,所以细心的你可能会发现加载过的页面再加载怎么会那么快啊。 核心的部分就是这个javascript函数: // 显示分页,传进去分页页码 function show_search_page(page_num) { // 首先判断目标页是否已经加载过,加载过的话就把其他页都设定隐藏再把当前页显示,然后结束返回        if ($chk($('page'+page_num)))     {         $('song_div').getElements('div[id^=page]').each(function(item,index){$(item).setStyle('display','none');});         $('page'+page_num).setStyle('display','block');         return;     } // 如果没有加载过,就通过ajax去获取页面数据,然后生成一个page+页面的div,并显示出来     var search_song_with_ajax = new Ajax('./getsearchdata.php?cur_page=' + page_num + '&key={_$search_key_}',     {method: 'get',     onComplete: function(){         $('song_div').getElements('div[id^=page]').each(function(item,index){$(item).setStyle('display','none');});         var new_div = new Element('div',{             'id':'page'+page_num         });         $(new_div).setHTML(this.response.text);         $(new_div).injectInside('song_div');     }     }).request(); } javascript的代码可以到页面去查看,hope it usefull for you.

Firefox3下mootools所带ajax不执行的问题

Thursday, July 31st, 2008

本博客所有原创文章采用知识共享署名-非商业性使用-相同方式共享,转载请保留链接http://chaoqun.17348.com/2008/07/firefox_mootols_ajax 今天下午,碰到一个奇怪的问题,通过mootools自带的ajax异步发送一个url请求去创建一个比如文章吧,url类似:http://www.example.com/article.php?article_name=article,发现当文章名相同时在firefox3下有时候能创建成功,有时不能,但是在IE7下没有问题,马上想到是浏览器cache的问题,firefox3以为请求的地址不变就不用再向服务器发送新请求了(好心做坏事),于是在php文件中加上header("Cache-Control:no-cache,must-revalidate"); 还是不起作用,而mootools带的ajax又没有cache控制的选项。 解决的方法比较取巧,在url后加上一串随机数,这些firefox3就会认为是新的请求了,代码大致如下: url = url + '&rand_num=' + Math.random(); 除非RP太差,否则不至于出问题。