大年三十有多坑就不说了,现在眼睛还是红的。好久没看自己网站的首页,突然发现自己首页的投票功能回退了。原先我用AJAX做的好好的,现在一点投票,网页会跳转到另一个页面。话说,这是什么时候的首页版本了,好像是去年10月份,那次我成功的将AJAX植入首页。于是我找到备份,结果还是老版本,其他的备份也不知道哪去了。大过年的诸事不顺。
没办法,重新再做一遍呗。时隔半年多,当时怎么写的代码都快忘了,都怪自己不写文档,最近在补呢。昨天还熬夜加班,脑子明细不那么灵光了。我查看了一下,应该只是首页需要改一下,让投票后不再跳转到别的页面,而是只刷新票数。投票计数的页面没动过,所以我只有添加一个ONCLICK的事件函数就行了。
function vote(id,action) { var xmlhttp; var idaction=id+action if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { if (action=='plus') { document.getElementById(idaction).innerHTML=xmlhttp.responseText; } else { document.getElementById(idaction).innerHTML=xmlhttp.responseText; } } } //xmlhttp.open("GET","/ajax/getcustomer.asp?q="+str,true); xmlhttp.open("get","/vote/vote.asp?id="+id+"&action="+action,true) xmlhttp.send(); } </script>
函数的代码是直接复制别人,然后根据自己需要改了一些参数和算法。投票的需要的是两个参数,一个定位数据库是哪条记录,一个是行为是赞还是踩。另外我还合成了一个变量idaction这个是标签的ID,就是包裹投票计数的那个标签。document.getElementById(idaction).innerHTML=xmlhttp.responseText这句话会把数据库最新的数据传回页面指定ID标签内。虽然原先做过一遍,但是重新弄出来还是花了点时间。主要是参数传递上面,貌似我用的算法跟原先的相比还有点出入。当初怎么传递的也记不大请了,不行了,太困了,到此为止吧。