/*
*--------------------------------------------------------------------
*
*建立一個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
%>