以下内容均转载自
这儿,仅供参考,代码本人并未验证使用,先预存于此。
==========================我是分割线======================================
其实B/S的离线很好办,数据在缓存中就可以实现,但如果有数据回调或是数据验证,就不问题了.
所以实现我个人认为有这相几个方法:
方法一:
1)数据缓以数组或XML缓存在客户端的网页中,用JS进行交互;
2)保存时,如果联机就直接保存到服务器,如果断线就保存在网页的XML或JS数组;
3)网络接通时,用XMLHTTP方式将离线数据上传到服务器
方法二:
1)数据缓存到客户端的XML文件,也JS的方式加载到页面;
2)保存时,文件先保存在客户端XML文件,如果网络联机就直接送到服务器,并清空XML;
3)网络接通进,将XML同步到服务器
两种方式都可以实现离线和断电功能;也各有优点,
方法一就是用户不能关闭当前的网站或系统,因为XML可用是以Frame的方隐藏的网页上的,关闭后,数据一样丢失..
方法二需要解决在客户端读写文件的权限与加解密问题;
我个人选择的是方法二,用ActievX + 数字签名 + XML + MD5文件验证实现
<script type="text/javascript" >
function SearchData()
{
var InputParam;
InputParam = document.getElementById('<%= this.UltraWebTab1.FindControl("WebTextEdit1").UniqueID %>').value;
for(var i=0;i<cst10100[0].length;i++)
{
if(cst10100[0][i]==InputParam)
{
igedit_getById('<%= this.UltraWebTab1.FindControl("WebTextEdit2").UniqueID %>').setValue(cst10100[4][i]);
igedit_getById('<%= this.UltraWebTab1.FindControl("WebTextEdit3").UniqueID %>').setValue(cst10100[7][i]);
igedit_getById('<%= this.UltraWebTab1.FindControl("WebTextEdit4").UniqueID %>').setValue(cst10100[5][i]);
igedit_getById('<%= this.UltraWebTab1.FindControl("WebTextEdit5").UniqueID %>').setValue(cst10100[6][i]);
igedit_getById('<%= this.UltraWebTab1.FindControl("WebTextEdit8").UniqueID %>').setValue(cst10100[2][i]);
}
}
var ListBoxControl=document.getElementById('<%= this.UltraWebTab1.FindControl("ListBox1").UniqueID %>');
for(var z=ListBoxControl.options.length;z>0;z--)
{
ListBoxControl.options[z-1].parentNode.removeChild(ListBoxControl.options[z-1]);
}
for(var z=0;z<cst10101[0].length;z++)
{
if (cst10101[0][z]==InputParam)
{
var newOption=document.createElement("OPTION");
newOption.text=cst10101[3][z];
newOption.value=cst10101[3][z];
ListBoxControl.options.add(newOption);
}
}
var dropdownlistControl=document.getElementById('<%= this.UltraWebTab1.FindControl("DropDownList2").UniqueID %>');
for(var z=dropdownlistControl.options.length;z>0;z--)
{
dropdownlistControl.options[z-1].parentNode.removeChild(dropdownlistControl.options[z-1]);
}
for(var z=0;z<cst10101[0].length;z++)
{
if (cst10101[0][z]==InputParam)
{
var newOption=document.createElement("OPTION");
newOption.text=cst10101[1][z];
newOption.value=cst10101[1][z];
dropdownlistControl.options.add(newOption);
}
}
}
//设置时间
var igdrp =igdrp_getComboById('<%= this.UltraWebTab1.FindControl("WebDateChooser1").UniqueID %>');
igdrp.setText('2007-4-11');
//添加节点
for(var z=0;z<cst10104[0].length;z++)
{
var resultId=document.getElementById('<%= this.UltraWebTab1.FindControl("DropDownList1").UniqueID %>');
var newOption=document.createElement("OPTION");
newOption.text=cst10104[1][z];
newOption.value=cst10104[0][z];
resultId.options.add(newOption);
}
</script>
<IE:CLIENTCAPS ID="oClientCaps" style=behavior:url(#default#clientCaps)/>
<script type="text/javascript" >
function getstatus()
{
if(oClientCaps.connectionType=="lan")
return "online";
else
return "offline";
}
function runClock()
{
theTime = window.setTimeout("runClock()", 1000);
status=getstatus();
//if (getstatus() =="online")
//判断本地是否有离线数据,当存在时进行同步
//SyncXML()
}
runClock()
function InsertData()
{
var CommonArry= new Array();
CommonArry[0]= new Array();
CommonArry[0][0]= 'cust';
CommonArry[0][1]= document.getElementById('<%= this.UltraWebTab1.FindControl("WebTextEdit1").UniqueID %>').value; // value
CommonArry[0][2]= "2";
CommonArry[1]= new Array();
CommonArry[1][0]= 'description';
CommonArry[1][1]= document.getElementById('<%= this.UltraWebTab1.FindControl("WebTextEdit8").UniqueID %>').value; // value
CommonArry[1][2]= "2";
CommonArry[2]= new Array();
CommonArry[2][0]= 'DeliveryAddr';
CommonArry[2][1]= document.getElementById('<%= this.UltraWebTab1.FindControl("WebTextEdit2").UniqueID %>').value; // value
CommonArry[2][2]= "2";
CommonArry[3]= new Array();
CommonArry[3][0]= 'PhoneNo';
CommonArry[3][1]= document.getElementById('<%= this.UltraWebTab1.FindControl("WebTextEdit4").UniqueID %>').value; // value
CommonArry[3][2]= "2";
CommonArry[4]= new Array();
CommonArry[4][0]= 'FaxNo';
CommonArry[4][1]= document.getElementById('<%= this.UltraWebTab1.FindControl("WebTextEdit5").UniqueID %>').value; // value
CommonArry[4][2]= "2";
insertData('custinfo',CommonArry);
document.getElementById("KunleneXML").WriteXML("JohnnyOfflineLineXML",doc.xml);
}
</script>
分享到:
相关推荐
随着技术的发展,现代系统往往融合了两者的优点,例如采用富客户端技术提升B/S的用户体验,或者使用微服务架构实现C/S的灵活扩展。 总的来说,B/S与C/S结构的选择取决于具体的需求和环境。理解和掌握这两种架构,...
Delphi可以与IIS、Apache等Web服务器集成,通过ISAPI扩展或独立的HTTP服务器组件如WebBroker,实现B/S应用的部署和运行。 六、Web应用程序框架 Delphi中的WebBroker、WebSnap或最新版本的FireMonkey可以用来构建Web...
【C# B/S 与 C/S 模式派车系统详解】 C# B/S(Browser/Server)和C/S(Client/Server)模式是两种常见的软件架构,它们在开发派车系统时各具特点和优势。C# B/S 派车系统主要基于Web浏览器,用户通过网页进行操作,...
随着技术的发展,现代软件系统往往结合了C/S和B/S架构的优点,如使用Web前端实现用户界面,后端则采用服务化架构,实现灵活的扩展和更好的性能。这种混合架构,既保留了B/S架构的易用性和跨平台性,又减少了服务器端...
本文将详细介绍一款名为“都市鹰地图查询系统”的地图软件的设计理念与功能特点,该软件采用C/S(客户端/服务器)和B/S(浏览器/服务器)混合模式,旨在为用户提供便捷高效的地图查询服务。 #### 二、软件特点 ###...
### 基于B-S方式的即时通讯软件的设计与实现 #### 一、引言 随着互联网技术的迅速发展,即时通讯(Instant Messaging,简称IM)已成为人们日常沟通的重要工具之一。它不仅改变了人们的交流方式,还极大地提升了...
B/S模式中,用户通过浏览器与服务器交互,所有的业务逻辑和界面渲染都在服务器端处理,而客户端只需负责展示和发送请求。C/S模式则不同,它有一个专门设计的客户端应用程序,这个程序不仅包含用户界面,还可能包含...
文件"www.pudn.com.txt"可能是关于B/S和C/S架构的更详细介绍或者相关资源的链接,而"CSDN技术中心 关于B-S和C-S架构的介绍.files"很可能包含了更深入的讨论,包括这两种架构的优缺点、实际案例分析以及如何根据项目...
基于B/S结构的Java聊天室是一个复杂的系统,涉及网络通信、多线程处理、数据安全和用户界面设计等多个方面。通过合理的设计和高效的编码,可以创建一个功能完善、性能稳定的聊天平台,满足用户即时通讯的需求。在...
本网站的设计与实现中,使用B/S系统模式来设计和开发网站,实现了网站的模块化和可维护性。 Tomcat服务器的应用 Tomcat服务器是一种流行的Web服务器,能够提供高效的网站应用服务。本网站的设计与实现中,使用...
在系统设计与实现中,采用基于IP网络应用技术的C/S模式和B/S模式混合构建。C/S模式是松散耦合结构,通过消息传递机制进行对话,而B/S模式采用瘦客户机方式构建,所有的开发、维护和升级工作集中在服务器端。这种...
在IT领域,C/S(Client/Server,客户端/服务器)架构与B/S(Browser/Server,浏览器/服务器)架构是两种常见的系统设计模式,它们在软件开发、部署和维护方面有着各自的特点和适用场景。 ### C/S架构:客户端/...
1. **AI集成**:结合机器学习技术,实现更智能的游戏角色行为模拟。 2. **实时渲染技术**:随着硬件性能的提升,未来的游戏将更加追求真实的实时渲染效果。 3. **跨平台开发工具**:为开发者提供更加便捷高效的跨...
婚庆行业o2o电子商务网站的设计和实现需要考虑到用户的需求和商家的需求,需要使用合适的技术和工具来实现,例如使用B/S三层体系结构模式、MySQL数据库管理系统、Java语言和Eclipse开发工具等。