| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1034 人关注过本帖, 1 人收藏
标题:[求助]无刷新鲜花鸡蛋投票
只看楼主 加入收藏
thbwn
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2007-10-2
结帖率:80%
收藏(1)
 问题点数:0 回复次数:4 
[求助]无刷新鲜花鸡蛋投票
无刷新鲜花鸡蛋投票代码,不知何故不成功,以下是代码:
ajax.js代码
function v(){
return;
}
//Ajax Start
function Ajax_GetXMLHttpRequest() {
if (window.ActiveXObject) {
  return new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
  return new XMLHttpRequest();
}
}
function Ajax_CallBack(ID,URL){
var x = Ajax_GetXMLHttpRequest();
var ID = document.getElementById(ID);
x.onreadystatechange = function(){
if(x.readyState == 4){
if(x.status == 200){
if(x.responseText!=""){
ID.innerHTML=x.responseText;
}else{
alert('您已投过票,不可以重复投票!');}}}}
        x.open('GET',URL,true);
        x.send(null);
}
//Ajax End


页面代码:

<!--#include File="conn.asp"-->
<script language="javascript" src="ajax.js"></script>
<%set rs=server.CreateObject("adodb.recordset")
sql="select * from news"
rs.open sql,conn,1,1%>
<%n=0
do while not rs.eof%>

<div><a href="javascript:v()" onclick="javascript:Ajax_CallBack('support<%=Rs("id")%>','FlowerEgg.asp?PostID=<%=Rs("id")%>&Status=support')" title="支持一下"><img src="images/1+.gif" width="20" height="20" border="0"></a>[<span id="support<%=Rs("id")%>"><%=rs("flower")%></span>]   <a href="javascript:v()" onclick="javascript:Ajax_CallBack('oppose<%=Rs("id")%>','FlowerEgg.asp?PostID=<%=Rs("id")%>&Status=oppose')" title="反对!"><img src="images/1-.gif" width="20" height="20" border="0"></a>[<span id="oppose<%=Rs("id")%>"><%=rs("egg")%></span>]</div>

<%
rs.movenext
n=n+1
if n=10 then exit do
loop
rs.close
%>


FlowerEgg.asp文件代码:
<!--#include file="conn.asp"-->
<%
postID=Request("PostID")
s=Request("status")
if IsNumeric(postID)=true then
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from [news] where ID="&PostID
rs.Open sql,conn,3,2
if instr("|"&Rs("BallotIPList"),"|"&Request.ServerVariables("REMOTE_ADDR")&"|")>0 then
 Response.write("")
  rs.close
else
  if s="support" then
   flower=rs("flower")+1
   rs("flower")=flower
   rs("BallotIPList")=rs("BallotIPList")&Request.ServerVariables("REMOTE_ADDR")&"|"
   rs.Update
   rs.close
   response.write(flower)
   response.write""&rs("BallotIPList")&""
  elseif s="oppose" then
   egg=rs("egg")+1
   rs("egg")=egg
   rs("BallotIPList")=rs("BallotIPList")&Request.ServerVariables("REMOTE_ADDR")&"|"
   rs.Update
   rs.close
   response.write(egg)
end if
end if
end if
%>


[[it] 本帖最后由 thbwn 于 2008-7-16 13:03 编辑 [/it]]
搜索更多相关主题的帖子: Ajax Microsoft 鲜花 鸡蛋 function 
2008-07-15 23:10
hmhz
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:30
帖 子:1890
专家分:503
注 册:2006-12-17
收藏
得分:0 
你这样投票方式肯定不行,问题出在FlowerEgg.asp文件里

你把投票者的IP记录下来,按照“|”分隔,这样是不科学的
那样你的BallotIPList字段要存储多大的数据啊,除非BallotIPList字段设置成备注

if instr("|"&Rs("BallotIPList"),"|"&Request.ServerVariables("REMOTE_ADDR")&"|")>0 then

这个判断中怎么会有逗号?而且这样判断也是不科学的
而你写进去的时候并没有带入逗号:
rs("BallotIPList")=rs("BallotIPList")&Request.ServerVariables("REMOTE_ADDR")&"|"

你应该在查询条件这里where ID="&PostID 加个模糊查询

where BallotIPList like '"&Request.ServerVariables("REMOTE_ADDR")&"' and ID="&PostID

这样就可以判断该IP是否存在
下面使用
if not(rs.eof and rs.bof) then
Response.write("")
else
…………
end if

[编程论坛] ASP超级群:49158383  敲门暗号:ASP编程
龍艺博客 http://www.
2008-07-16 10:23
thbwn
Rank: 1
等 级:新手上路
帖 子:235
专家分:0
注 册:2007-10-2
收藏
得分:0 
一楼的代码已被修改,投票后可及时无刷新正确显示结果。但有这样一个问题:

投票后,被点项(如鲜花)再次点击投票不弹出"您已投过票,不可以重复投票!",点击相对应的项(鸡蛋)投票能弹出此提示框。如果更新缓存或关闭ie重新打开网页才能点击鲜花或鸡蛋均弹出提示框!
是不是js有问题?请求帮助。

[[it] 本帖最后由 thbwn 于 2008-7-16 13:42 编辑 [/it]]

          人人为我,我为人人!
2008-07-16 13:07
hmhz
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:30
帖 子:1890
专家分:503
注 册:2006-12-17
收藏
得分:0 
FlowerEgg.asp文件顶部加个禁止缓存代码
<%
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>

[编程论坛] ASP超级群:49158383  敲门暗号:ASP编程
龍艺博客 http://www.
2008-07-16 17:43
multiple1902
Rank: 8Rank: 8
等 级:贵宾
威 望:42
帖 子:4881
专家分:671
注 册:2007-2-9
收藏
得分:0 
或者在open的时候后面加个随机数使每次的url都不同

    url=location.href.substring(0,location.href.lastIndexOf("/"))+"/AjaxNews.asp?page="+page+"&rnd="+Math.round(Math.random()*10000);

    http.open("GET",url,true);
2008-07-16 19:29
快速回复:[求助]无刷新鲜花鸡蛋投票
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032004 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved