ajax異步刷新實(shí)現(xiàn)更新數(shù)據(jù)庫(kù)
更新時(shí)間:2012年12月03日 10:30:59 作者:
下面寫(xiě)關(guān)于如何把無(wú)刷新的數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)中,需要的朋友可以參考下
上篇文章都是關(guān)于界面的東西,下面寫(xiě)關(guān)于如何把無(wú)刷新的把數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)中。
當(dāng)我們改變某一個(gè)人或某幾個(gè)人的某項(xiàng)分值實(shí)現(xiàn)無(wú)刷新寫(xiě)入數(shù)據(jù)庫(kù)。
首先,我們需要聲明XMLHttpRequest對(duì)象
//聲明XMLHttpRequest對(duì)象
var xmlHttp;
function createXMLHTTP() {
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest(); //Mozilla瀏覽器
}
else if (window.ActiveXObject) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); //IE老版本
}
catch (e)
{ }
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE新版本
}
catch (e)
{ }
if (!xmlHttp) {
window.alert("不能創(chuàng)建XMLHttpRequest對(duì)象實(shí)例!");
return false;
}
}
}
同時(shí),需要回調(diào)函數(shù)來(lái)確定是否修改成功
//更新或者添加記錄的回調(diào)函數(shù)(檢驗(yàn)是否評(píng)分成功)
function ModifyScore ()
{
if (xmlHttp.readyState == 4)
{
// if (xmlHttp.status == 200)
{
if (xmlHttp.responseText == "true")
{
}
else
{
// alert("評(píng)分失敗,請(qǐng)重新評(píng)分或者與管理員聯(lián)系");
}
}
}
}
準(zhǔn)備工作完成之后,下面就是關(guān)鍵的一步:
因?yàn)樾枰谛薷姆种档臅r(shí)候?qū)懭霐?shù)據(jù)庫(kù),所以只需要在上篇博客中提高的改變下拉框值(循環(huán)選中項(xiàng)時(shí))的執(zhí)行這樣一段代碼:
//獲取互評(píng)ID
var criticsID = checkbox[i].value;
//把修改值寫(xiě)入數(shù)據(jù)庫(kù)
//獲取項(xiàng)目分?jǐn)?shù)
var scoreAll = document.getElementById("score" +checkbox[i].value + srcElem.id + "");
var accessAllScore = scoreAll.outerText;
//獲取項(xiàng)目編號(hào)
var assess = document.getElementById("assess" + srcElem.id);
var assessID = assess.title;
createXMLHTTP(); //創(chuàng)建XMLHttpRequest對(duì)象
//把數(shù)據(jù)傳入到另一個(gè)頁(yè)面執(zhí)行
var url = "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獲取參數(shù),并執(zhí)行寫(xiě)入數(shù)據(jù)庫(kù)就可以了
//獲取參數(shù)
if(Request.QueryString["Event"].ToString() =="allCriticsInfo")
{
string criticsID = Request.QueryString["criticsID"].ToString();
string assessID = Request.QueryString["assessID"].ToString();
string accessAllScore =Request.QueryString["accessAllScore"].ToString();
}
參數(shù)傳過(guò)來(lái)之后,寫(xiě)入數(shù)據(jù)庫(kù)就很容易了,這里就不提了。
這樣,在前臺(tái)顯示的效果就是沒(méi)有刷新,時(shí)時(shí)的把數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)。只是把臟活累活都交給CriticsAgainAjax.aspx頁(yè)面來(lái)干,這也是一種不錯(cuò)的分工。
這樣寫(xiě)出了少刷新以外,還有另一個(gè)好處就是ajax是異步操作,即在js頁(yè)面中把數(shù)據(jù)拋到CriticsAgainAjax.aspx之后,他就繼續(xù)執(zhí)行,他不考慮CriticsAgainAjax.aspx是否執(zhí)行完成,可能拋過(guò)來(lái)100條數(shù)據(jù),寫(xiě)入數(shù)據(jù)庫(kù)需要三秒鐘,而拋過(guò)來(lái)的時(shí)間是非??斓?,可能就零點(diǎn)幾秒,所以用戶(hù)的感覺(jué)會(huì)非常好,他不需要在選中后等半天才能繼續(xù)執(zhí)行。

當(dāng)我們改變某一個(gè)人或某幾個(gè)人的某項(xiàng)分值實(shí)現(xiàn)無(wú)刷新寫(xiě)入數(shù)據(jù)庫(kù)。
首先,我們需要聲明XMLHttpRequest對(duì)象
復(fù)制代碼 代碼如下:
//聲明XMLHttpRequest對(duì)象
var xmlHttp;
function createXMLHTTP() {
if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest(); //Mozilla瀏覽器
}
else if (window.ActiveXObject) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); //IE老版本
}
catch (e)
{ }
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE新版本
}
catch (e)
{ }
if (!xmlHttp) {
window.alert("不能創(chuàng)建XMLHttpRequest對(duì)象實(shí)例!");
return false;
}
}
}
同時(shí),需要回調(diào)函數(shù)來(lái)確定是否修改成功
復(fù)制代碼 代碼如下:
//更新或者添加記錄的回調(diào)函數(shù)(檢驗(yàn)是否評(píng)分成功)
function ModifyScore ()
{
if (xmlHttp.readyState == 4)
{
// if (xmlHttp.status == 200)
{
if (xmlHttp.responseText == "true")
{
}
else
{
// alert("評(píng)分失敗,請(qǐng)重新評(píng)分或者與管理員聯(lián)系");
}
}
}
}
準(zhǔn)備工作完成之后,下面就是關(guān)鍵的一步:
因?yàn)樾枰谛薷姆种档臅r(shí)候?qū)懭霐?shù)據(jù)庫(kù),所以只需要在上篇博客中提高的改變下拉框值(循環(huán)選中項(xiàng)時(shí))的執(zhí)行這樣一段代碼:
復(fù)制代碼 代碼如下:
//獲取互評(píng)ID
var criticsID = checkbox[i].value;
//把修改值寫(xiě)入數(shù)據(jù)庫(kù)
//獲取項(xiàng)目分?jǐn)?shù)
var scoreAll = document.getElementById("score" +checkbox[i].value + srcElem.id + "");
var accessAllScore = scoreAll.outerText;
//獲取項(xiàng)目編號(hào)
var assess = document.getElementById("assess" + srcElem.id);
var assessID = assess.title;
createXMLHTTP(); //創(chuàng)建XMLHttpRequest對(duì)象
//把數(shù)據(jù)傳入到另一個(gè)頁(yè)面執(zhí)行
var url = "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獲取參數(shù),并執(zhí)行寫(xiě)入數(shù)據(jù)庫(kù)就可以了
復(fù)制代碼 代碼如下:
//獲取參數(shù)
if(Request.QueryString["Event"].ToString() =="allCriticsInfo")
{
string criticsID = Request.QueryString["criticsID"].ToString();
string assessID = Request.QueryString["assessID"].ToString();
string accessAllScore =Request.QueryString["accessAllScore"].ToString();
}
參數(shù)傳過(guò)來(lái)之后,寫(xiě)入數(shù)據(jù)庫(kù)就很容易了,這里就不提了。
這樣,在前臺(tái)顯示的效果就是沒(méi)有刷新,時(shí)時(shí)的把數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)。只是把臟活累活都交給CriticsAgainAjax.aspx頁(yè)面來(lái)干,這也是一種不錯(cuò)的分工。
這樣寫(xiě)出了少刷新以外,還有另一個(gè)好處就是ajax是異步操作,即在js頁(yè)面中把數(shù)據(jù)拋到CriticsAgainAjax.aspx之后,他就繼續(xù)執(zhí)行,他不考慮CriticsAgainAjax.aspx是否執(zhí)行完成,可能拋過(guò)來(lái)100條數(shù)據(jù),寫(xiě)入數(shù)據(jù)庫(kù)需要三秒鐘,而拋過(guò)來(lái)的時(shí)間是非??斓?,可能就零點(diǎn)幾秒,所以用戶(hù)的感覺(jué)會(huì)非常好,他不需要在選中后等半天才能繼續(xù)執(zhí)行。
您可能感興趣的文章:
- bootstrapTable+ajax加載數(shù)據(jù) refresh更新數(shù)據(jù)
- Vue.js 通過(guò)jQuery ajax獲取數(shù)據(jù)實(shí)現(xiàn)更新后重新渲染頁(yè)面的方法
- Vue2.X 通過(guò)AJAX動(dòng)態(tài)更新數(shù)據(jù)
- jquery+ajaxform+springboot控件實(shí)現(xiàn)數(shù)據(jù)更新功能
- 利用jQuery及AJAX技術(shù)定時(shí)更新GridView的某一列數(shù)據(jù)
- jquery ajax 局部無(wú)刷新更新數(shù)據(jù)的實(shí)現(xiàn)案例
- Ajax異步無(wú)刷新對(duì)局部數(shù)據(jù)更新
- ajax頁(yè)面無(wú)刷新 IE下遭遇Ajax緩存導(dǎo)致數(shù)據(jù)不更新的問(wèn)題
- ajax更新數(shù)據(jù)后,jquery、jq失效問(wèn)題
- Ajax實(shí)現(xiàn)表格中信息不刷新頁(yè)面進(jìn)行更新數(shù)據(jù)
相關(guān)文章
淺談JQ中mouseover和mouseenter的區(qū)別
下面小編就為大家?guī)?lái)一篇淺談JQ中mouseover和mouseenter的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。2016-09-09jQuery中常用動(dòng)畫(huà)效果函數(shù)知識(shí)點(diǎn)整理
這篇文章我們給大家整理了關(guān)于jQuery中常用動(dòng)畫(huà)效果函數(shù)的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友可以學(xué)習(xí)下。2018-08-08jQuery進(jìn)行組件開(kāi)發(fā)完整實(shí)例
這篇文章主要介紹了jQuery進(jìn)行組件開(kāi)發(fā)的方法,以完整實(shí)例形式分析了基于jQuery實(shí)現(xiàn)自定義組件的相關(guān)技巧,代碼備有詳盡的注釋便于理解,需要的朋友可以參考下2015-12-12jquery 實(shí)現(xiàn)京東商城、凡客商城的圖片放大效果
京東商城、凡客商城的圖片放大效果很是吸引人2009-05-05jquery中實(shí)現(xiàn)簡(jiǎn)單的tabs插件功能的代碼
jquery改變了程序員寫(xiě)javascript的方式。作為jquery的愛(ài)好者和新手,最近我學(xué)會(huì)了用寥寥幾句jquery代碼實(shí)現(xiàn)類(lèi)似tabs插件的功能,相信此文能為許多剛?cè)腴T(mén)的jquery愛(ài)好者和想實(shí)現(xiàn)tabs插件功能的朋友帶來(lái)一些幫助。2011-03-03