zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

ajax异步刷新实现更新数据库

数据库AJAX 实现 更新 异步刷新
2023-06-13 09:14:41 时间
上篇文章都是关于界面的东西,下面写关于如何把无刷新的把数据写入到数据库中。

当我们改变某一个人或某几个人的某项分值实现无刷新写入数据库。
首先,我们需要声明XMLHttpRequest对象
复制代码代码如下:

//声明XMLHttpRequest对象
varxmlHttp;
functioncreateXMLHTTP(){
if(window.XMLHttpRequest){
xmlHttp=newXMLHttpRequest();//Mozilla浏览器
}
elseif(window.ActiveXObject){
try{
xmlHttp=newActiveXObject("Msxml2.XMLHTTP");//IE老版本
}
catch(e)
{}
try{
xmlHttp=newActiveXObject("Microsoft.XMLHTTP");//IE新版本
}
catch(e)
{}
if(!xmlHttp){
window.alert("不能创建XMLHttpRequest对象实例!");
returnfalse;
}
}
}

同时,需要回调函数来确定是否修改成功
复制代码代码如下:

//更新或者添加记录的回调函数(检验是否评分成功)
functionModifyScore()
{
if(xmlHttp.readyState==4)
{
//if(xmlHttp.status==200)
{
if(xmlHttp.responseText=="true")
{
}
else
{
//alert("评分失败,请重新评分或者与管理员联系");
}
}
}
}

准备工作完成之后,下面就是关键的一步:
因为需要在修改分值的时候写入数据库,所以只需要在上篇博客中提高的改变下拉框值(循环选中项时)的执行这样一段代码:
复制代码代码如下:
//获取互评ID
varcriticsID=checkbox[i].value;
//把修改值写入数据库
//获取项目分数
varscoreAll=document.getElementById("score"+checkbox[i].value+srcElem.id+"");
varaccessAllScore=scoreAll.outerText;
//获取项目编号
varassess=document.getElementById("assess"+srcElem.id);
varassessID=assess.title;
createXMLHTTP();//创建XMLHttpRequest对象
//把数据传入到另一个页面执行
varurl="CriticsAgainAjax.aspx?criticsID="+criticsID+"&assessID="+assessID+"&accessAllScore="+accessAllScore+"&Event=allCriticsInfo";
xmlHttp.open("Post",url,true);
//xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.onreadystatechange=AnswerOneKindQuestion;
xmlHttp.send(null);

最后,我们只需要在CriticsAgainAjax.aspx获取参数,并执行写入数据库就可以了
复制代码代码如下:
//获取参数
if(Request.QueryString["Event"].ToString()=="allCriticsInfo")
{
stringcriticsID=Request.QueryString["criticsID"].ToString();
stringassessID=Request.QueryString["assessID"].ToString();
stringaccessAllScore=Request.QueryString["accessAllScore"].ToString();
}

参数传过来之后,写入数据库就很容易了,这里就不提了。
这样,在前台显示的效果就是没有刷新,时时的把数据写入到数据库。只是把脏活累活都交给CriticsAgainAjax.aspx页面来干,这也是一种不错的分工。
这样写出了少刷新以外,还有另一个好处就是ajax是异步操作,即在js页面中把数据抛到CriticsAgainAjax.aspx之后,他就继续执行,他不考虑CriticsAgainAjax.aspx是否执行完成,可能抛过来100条数据,写入数据库需要三秒钟,而抛过来的时间是非常快的,可能就零点几秒,所以用户的感觉会非常好,他不需要在选中后等半天才能继续执行。