现在的无刷新更新方式有很多种,目前普通的可能会采用Ajax的方式.
刚好前几天我也用了一下.采用了两种方式.一各是ajax的无刷新方式.还有一种是采用XML的无刷新方式.
第一种.ajax的方式
使用的是ajaxpro 2.0在网上下一个DLL
文件,加入到项目中.
<system.web>中加入下面这句话.
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>
使用时.在Page_Load()中加入这句话.
AjaxPro.Utility.RegisterTypeForAjax(typeof(ChatMain)); //我的界面名称是ChatMain
在这个界面中使用的方法在方面前台加上[AjaxPro.AjaxMethod]
例如:
[AjaxPro.AjaxMethod]
public ArrayList GetAllUserList()
{
//这里写代码
}
这样在前台的aspx界面中这样使用
function GetAllUser(themeid)
{
var obj = document.getElementById("userlist"); //这里的userlist是一个DIV的ID
obj.innerHTML = '';
var array = ChatMain.GetAllUserList(themeid); //这里调用的就是ajax的方法.ChatMain是界面的名称.
for(var i=0;i<array.value.length;i++)
{
obj.innerHTML += "<br> [<a href='#'>"+array.value[i]+"</a>]";
}
}
在前台的aspx界面中就需要处理传过来的arraylist.我上面只是一个循环使用了一下.
第二种方式,是使用另一个界面方式返回一个XML文件的方式.
两个界面.一个是ChatMain.aspx还有一个是ChatMainGetAllUser.aspx
ChatMain.aspx是主要的界面.用来显示信息.ChatMainGetAllUser.aspx界面则只有<%@ Page ......%>这个属性别的都可删掉.
在ChatMain.aspx界面中的javascript中写入如下两句:
var oHttpReq = new ActiveXObject("MSXML2.XMLHTTP");
var oDoc = new ActiveXObject("MSXML2.DOMDocument");
function GetAllUser()
{
oHttpReq.open("POST","ChatMainGetAllUser.aspx?Tname="+themeid+"&uid="+username+"&message="+message);
oHttpReq.send();
result = oHttpReq.responseText; //这里返回的即是ChatMainGetAllUser.aspx返回的XML数据
oDoc.loadXML(result); //得到一个XML的document
items = oDoc.selectNodes("//Test/Table"); //这里就是进行的XML操作了
for(var item = items.nextNode();item;item = items.nextNode())
{
var pname = item.text;
var newOp = document.createElement("OPTION");
newOp.value = pname;
newOp.text = pname;
drp2.options.add(newOp);
}
}
而在ChatMainGetAllUser.aspx界面中则只会有一个方法.
Page_Load()方法,并且必须返回一个XML的数据
例如我的是这样写的:
if (Request.QueryString["Tname"] != null)
{
string tname = Request.QueryString["Tname"].ToString();
SqlDataAdapter da = new SqlDataAdapter(string.Format("select pname from TestDropdownList where Pid=
{0}",tname),DBConnection.GetConnection());
DataSet ds = new DataSet("Test");
da.Fill(ds);
XmlTextWriter write = new XmlTextWriter(Response.OutputStream,Response.ContentEncoding);
write.Formatting = Formatting.Indented;
write.Indentation = 4;
write.IndentChar = ' ';
ds.WriteXml(write);
write.Flush();
Response.End();
write.Close();
}
这样就完成了一次交互,而且界面没有刷新.处理的时候,只要在ChatMain.aspx进行XML的操作就可以了.
这些只是个人的使用介绍.