A.  通过在客户端设置Cookie,然后在服务器端读取它.
关于Cookie只说明一点, 它是存储在客户端机器上的一小块信息, 可以有客户端程序或服务器程序创建,并通过http传递.常用于跟踪用户在客户端的一些动作,如:
上次访问时间,存储用户登录信息, 以及浏览的历史.
Cookie由6部分组成:
1. 名称: 表示一个唯一的名称,由字母,数字和下划线组成, 不区分大小写. 不过最好是区分大小写.
2. 值: 保存在Cookie中的字符串值. 这个值在存储之前必须用encodeRUIComponent()对其编码.以免数据丢失.
3. 域: 出于安全考虑,网站不能访问其它域创建的cookie.
4. 路径: 另一个cookie安全特征,路径限制了对web服务器上的特定目录的访问. 如:http://www.wrox.com/books中创建的cookie不能在http://www.wrox.com/上的网页访问.
5. 失效日期: 一个GMT格式的日期
6. 安全标志 : 一个true或false值.
一个完整的cookie类似与如下形式:
cookie_name=cookie_value; expires=expires_time; path=domain_path; domain=domain_name; secure --分号隔离
1>,创建cookie:
document.cookie = "name=Nicholas";
document.cookie = "book=" +encodeURIComponent("Professional Javascript");
因为要创建cookie必须要安照它的格式,所以我们用一个函数来处理:
function setCookie(sName,sValue,oExpress,sPath,sDomain,bSecure)
{
var sCookie = sName + "=" + encodeURIComponent(sValue);
if(oExpres){
sCookie += "; expires=" +oExpress.toGMTString();
}
if(sPath){
sCookie +="; path=" + sPath;
}
if(sDomain){
sCookie +="; domain=" +sDomain;
}
if(bSecure){
sCookie +="; secure;
document.cookie = sCookie;
}
调用
setCookie("name","Nicholas");
setCookie("book","Professional Javascript",new Date(Date.parse("Jan 1, 2006")),"/books","http://www.wrox.com",true)
2>, 访问cookie
function getCookie(sName){
var sRE = "(?:;)?"+ sName +"=([^;]*);?";
var oRE = new RegExp(sRE);
if(oRE.test(document.cookie)){
return decodeURIComponent(RegExp["$1"]);
}else {
return null
}
}
调用:
var sName = getCookie("name");
var sBook = getCookie("book"); B. 通过隐藏框架和服务器交互
这其实是一个小技巧, 基本的概念就是:创建一个可用Javascript与服务器进行通信的0像素高的框架,这样就隐藏了这个框架.这中通信方式要求2部分内容:
用于处理客户端通信的Javascript对象和在服务器端处理通信的特殊页面.
例如:
<html>
<head>
<title>Hiddle Frame Example</title>
</head>
<body>
<frameset rows="*,0">
<frame src="main.html" name="mainFrame"/>
<frame src="hiddle.aspx" name="hiddenFrame"/>
</frameset>
</body>
</html>
注意,这个框架集由两个框架组成,第二个框架高度为0,第一个框架用于用户进行交互;第二个用于与服务器交互.
在第一个框架定义如下2个函数:
<html>
<head>
<title>Hidden Frame Example (Main)</title>
<script type="text/javascript">
function getServerInfo() {
parent.frames["hiddenFrame"].location.href = "hiddle.aspx"; //使隐藏框架访问一次服务器
} function handleResponse(sResponseText) { //接收返回的数据
alert("The server sent back this message: " + sResponseText);
}
</script>
</head>
<body>
<p>单击该按钮调用服务器端返回的数据</p>
<input type="button" onclick="getServerInfo()" value="获取服务器上的数据" />
</body>
</html>
在第二个框架定义用于发送返回的消息
<html>
<head>
<title>Hidden Frame Example (Response)</title>
<script type="text/javascript"> window.onload = function () {
parent.handleResponse(document.forms["formResponse"].result.value); --把数据返回
};
</script> </head>
<body>
<form name="formResponse">
<textarea name="result">This is some data coming from the server.</textarea>
</form>
</body>
</html> C. 通过iframe和服务器交互
1. 动态创建一个隐藏框架,用于创建向服务器发送请求的函数,和一个用于处理响应的函数
<html>
<head>
<title>Hidden Frame Example (Main)</title>
<script type="text/javascript"> var oHiddenFrame = null; --创建一个全局变量 function getServerInfo() {
if (oHiddenFrame == null) {
oHiddenFrame = document.createElement("iframe");
oHiddenFrame.name = "hiddenFrame";
oHiddenFrame.id = "hiddenFrame";
oHiddenFrame.style.height = "0px";
oHiddenFrame.style.width = "0px";
oHiddenFrame.style.position = "absolute";
oHiddenFrame.style.visibility = "hidden";
document.body.appendChild(oHiddenFrame);
} setTimeout(function () {
frames["hiddenFrame"].location.href = "hiddle.aspx";
}, 10); --由于要重绘DOM,所以延迟10毫秒
} function handleResponse(sResponseText) {
alert("The server sent back this message: " + sResponseText);
}
</script>
</head>
<body>
<p>单击该按钮调用服务器端返回的数据</p>
<input type="button" onclick="getServerInfo()" value="Get Server info" />
</body>
</html>
2. 给客户端返回数据
<html>
<head>
<title></title>
<script type="text/javascript"> window.onload = function () {
parent.handleResponse(document.forms["formResponse"].result.value);
};
</script> </head>
<body>
<form name="formResponse">
<textarea name="result">This is some data coming from the server.</textarea>
</form>
</body>
</html>

javascript与服务器1的更多相关文章

  1. 意外作出了一个javascript的服务器,可以通过js调用并执行任何java(包括 所有java 内核基本库)及C#类库,并最终由 C# 执行你提交的javascript代码! 不敢藏私,特与大家分

    最近研发BDC 云开发部署平台的数据路由及服务管理器意外作出了一个javascript的服务器,可以通过js调用并执行任何java(包括 所有java 内核基本库)及C#类库,并最终由 C# 执行你提 ...

  2. javascript与服务器3

    一, 带参数的XMLHTTP请求 1, 进行get请求 get请求最常见的是在浏览器地址栏中输入URL并打开页面时,这就是向服务器发送一个get请求. 它的限制是URL最大长度不能超过2048字符(2 ...

  3. javascript与服务器2

    一, 通过IE建立XMLHTTP请求 这种请求方式源自与微软创建了XMLHTTP请求对象,只要用户的机器上安装了MSXML就可以发送XMLHTTP请求来创建客户端和服务器端的通信, XMLHTTP请求 ...

  4. 展示html/javascript/css------Live-Server服务器

    Live-server简介 这是一款带有热加载功能的小型开发服务器.用它来展示你的HTML / JavaScript / CSS,但不能用于部署最终的网站. 官网地址:https://www.npmj ...

  5. 使用javascript获取服务器时间

    思路:采用异步请求的方式,发送请求,获取HTTP请求的response头,头部中包含时间,使用getResponseHeader('Date')即可. 注意:以下任何一种方法都不精确,因为请求包的传输 ...

  6. Javascript获取服务器时间

    //获取服务器时间 var getServerDate = function () {     var xmlHttpRequest = null,     serverDate = new Date ...

  7. javascript中的错误处理机制

    × 目录 [1]对象 [2]类型 [3]事件[4]throw[5]try[6]常见错误 前面的话 错误处理对于web应用程序开发至关重要,不能提前预测到可能发生的错误,不能提前采取恢复策略,可能导致较 ...

  8. php面试题之二——Javascript(基础部分)

    二.JavaScript部分 1. JS 表单弹出对话框函数是?获得输入焦点函数是? 弹出对话框函数:alert(), prompt(), confirm() 获得输入焦点函数:focus() 2. ...

  9. C# 实现HTML5服务器推送事件

    为什么需要服务器推送事件: 因为如果需要保持前台数据的实时更新例如,IM聊天,股票信息, 1.可以在客户端不断地调用服务端的方法来获得新数据,但是这样会很消耗服务器资源,导致系统变慢! 2 html5 ...

随机推荐

  1. [转]EXCEL如何使用动态公式

    本文转自:http://tech.cncms.com/ruanjian/office/excel/95440.html 也许大家可能还不知道Excel中的动态公式是什么,所谓的动态公式,不是普通的公式 ...

  2. c++字符串互相转换

    1.string vs char* //string to char* string str; const char* cch = str.c_str(); ]; strcpy(ch,cch); // ...

  3. 《TCP/IP 详解 卷一》读书笔记-----IP静态 路由

    1.主机中的路由表只能被守护进程routing daemon或者“redirect”类型的ICMP报文所更新. 2.在根据路由表进行路由选择时,判断的优先级从高到低依次为1)表中存在与目的IP完全匹配 ...

  4. 五个有用的jquery小技巧

    1.禁用鼠标右键 $(document).ready(function() { $(document).bind("contextmenu", function(e) { retu ...

  5. java 16-2 ArrayList的练习2

      需求:去除集合中自定义对象的重复值(对象的成员变量值都相同 注意: 我们按照和字符串一样的操作,发现出问题了. 为什么呢? 我们必须思考哪里会出问题? 通过简单的分析,我们知道问题出现在了判断上. ...

  6. 使用 ssh 连接github的方法说明(gitub的官方说法)

    https://help.github.com/articles/generating-an-ssh-key/

  7. 22Mybatis_订单商品数据模型_多对多查询以及对多对多查询的总结

    之前讲了一对一,一对多查询,这篇文章讲的是多对多. 先给出需求:查询用户及用户购买商品信息. 我们由之前的文章知道,这个需求是多对多的. 还是那个终止我们的mybatis所做的不管是之前的一对一还是一 ...

  8. 区块链技术(一):Truffle开发入门

    以太坊是区块链开发领域最好的编程平台,而truffle是以太坊(Ethereum)最受欢迎的一个开发框架,这是我们第一篇区块链技术文章介绍truffle的原因,实战是最重要的事情,这篇文章不讲原理,只 ...

  9. Eclipse下配置tomcat且使用eclipse开启debug模式,集成JAD反编译插件

    Eclipse运行Tomcat的2种方式 eclipse启动Tomcat服务输入http://localhost:8080/报404解决方法 Eclipse 中Tomcat 启动 与直接启动Tomca ...

  10. GEOS库的学习之一:介绍和编译

    对GEOS库的学习,源于一个项目:要在c++中判断二维平面中两个多边形的关系(无论凹凸).也就是判断两个多边形是否相交.相容等.听起来很简单,可实现起来却比较难,而项目又催得紧.于是我去搜索了一下,看 ...