/*
*--------------------------------------------------------------------
*
*创建一个XMLHttp实例
*return object 成功创建返回一个XMLHttp对象实例,否则返回false
*
*--------------------------------------------------------------------
*/
function CreateAjax()
{
var XMLHttp;
try
{
XMLHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE的创建方式
}
catch(e)
{
try
{
XMLHttp = new XMLHttpRequest(); //FF等浏览器的创建方式
}
catch(e)
{
XMLHttp = false; //创建失败,返回false
}
}
return XMLHttp; //返回XMLHttp实例
}
/*
*-------------------------------------------------------------------------
*
*函数名:Dig(id)
*功能:投票
*参数:id
* 1、id:文章的id
*
*-------------------------------------------------------------------------
*/
function Dig(id)
{
_xmlhttp = CreateAjax();
var url = 'service.asp?id='+id+'&n='+Math.random()+''; //这里添加了一个参数n,表示为一个随机数,以避免浏览器缓存
if(_xmlhttp) //判断XmlHttp是否创建成功
{
var content = document.getElementById("dig"+id);
var dig = document.getElementById(id); //获取页面中ID为文章Id的节点
_xmlhttp.open('GET',url,true);
_xmlhttp.onreadystatechange=function()
{
if(_xmlhttp.readyState == 4) //客户端完成请求
{
if(_xmlhttp.status == 200) //服务端完成处理并返回数据
{
var ResponseText = unescape(_xmlhttp.responseText); //获取service的显示字符
var r=ResponseText.split(","); //如果已经投票、service会显示Dig,投票数,这里分割字符用于显示错误和重置计数
if(r[0] == "Dig" ) //service返回了错误信息
{
alert("您已经投过票了!");
dig.innerHTML=r[1];
}
//没有找到文章
else if(ResponseText == "NoData")
{
alert("参数错误!");
}
else
{
//服务器返回了成功,重置投票数
dig.innerHTML=ResponseText;
alert("投票成功");
//将投一票改成查看文章的按钮
content.innerHTML='<a href="shownew.asp?id=' + id + '">查看</a>';
}
}
else //服务器出现异常
{
alert("服务器返回异常!");
top.location.href='index.asp';
}
}
else //请求未完成时的提示信息
{
dig.innerHTML='<img src="images/Loading.gif">';
}
}
_xmlhttp.send(null); //向服务器发送请求,因为是get请求,会直接附在URL后面,所以这里括号中的数据为null,IE中也可以不写,但FF就必须加上null,否则会发送失败。
}
else //创建未成功
{
alert("您的浏览器不支持或未启用 XMLHttp!");
}
}
上面是xmlhttp实例的数据无刷新处理,下面是asp数据处理并返回数据
<!--#include File="conn.asp"-->
<%
Dim id
Dim Rs,Sql
id = Replace(Trim(Request.QueryString("id")),"'","")
If Session("id"&id)<>"" Then
Set Rs = Server.CreateObject("ADODB.Recordset")
Sql = "Select * From News Where id="&id
Rs.Open Sql,Conn,3,3
If Rs.Eof And Rs.Bof Then
Response.Write("NoData")
Else
Response.Write("Dig")
Response.Write(",")
Response.Write(Rs("Dig"))
End If
Else
Set Rs = Server.CreateObject("ADODB.Recordset")
Sql = "Select * From News Where id="&id
Rs.Open Sql,Conn,3,3
If Rs.Eof And Rs.Bof Then
Response.Write("NoData")
Else
Dim Dig
Dig =Rs("Dig")
Dig = Dig + 1
Rs("Dig") = Dig
Rs.Update
Rs.Close
Set Rs = Nothing
Session("id"&id) = id
Response.Write(Dig)
End If
End If
%>