javascript学习笔记:get和post方法
概述
学习AJAX的过程中,发现自己之前存在着很多的不足,于是花了些时间,总结了一些知识,现在和大家分享一下。
【资料图】
前端和后端,前台和后台
前端和后端指的是客户端和服务器端;前台和后台指的都是客户端上浏览者浏览界面和管理者管理界面。
get和post方法
客户端和服务器端进行数据的传递通过的都是get方法或者post方法。get方法的数据会留在浏览器中新返回页面的url里面;post方法中的数据在浏览器的请求包内的数据内容里面,服务器接收后,如果没有对齐进行处理,那么我们就无法在返回页面中找到相应的数据。
脚本
单纯的说脚本太抽象,从电影的角度说:电影后期编辑时,编辑师根据脚本对拍摄的影像进行剪切,排版,加入特效等等相应的操作;从计算机语言的角度说:HTML文档后期运行时,浏览器根据脚本(客户端脚本)对HTML进行相应动态的处理和显示。具体让我用一句话来说的话,脚本就是可以加工成型东西的机制。
纯HTML页面之间数据传递和使用
叙述
单单使用html标签进行数据的传递和使用(特指)是不可能实现的,所以,这里说的“纯”是可以有客户端脚本的HTML页面,当然,另一个隐含的意思就是,这里没有后台脚本等等的参与,所以,你直接把数据提交给服务器,这个方法是不管用的,也就是说post方法不可以实现纯HTML页面之间数据传递(可以)和使用(不可以),在这里本人也会给出相应post方法的数据传递的实现代码,好了,接着说本块的这个话题。
如何实现这个该功能呢?有什么方法呢?一个思路是通过get方法;另一个思路是通过浏览器中的cookie。
通过get方法
传递数据的页面代码(通过3种方法实现,其它的大家自己再想一想,本句不再重复)
利用链接标签a手动拼接url链接
利用javascript手动拼接url//JavaScript中写window.open("test3.html?name=qingshan&key=qingshan");弹出窗口一般不行
function Post(){
url="获得url中的参数.html?name=" + encodeURI(document.getElementById("name").value);
//页面跳转,并在url中传递数据
location.href=url; //location为对象
//window.location.href=url; location为对象
//window.location=url; location为属性
//document.location=url;
}
利用form表单自动拼接url姓名:
性别:
接收并显示数据
获得url中的参数/*
1、从 URL 字符串中提取变量的值
2、字符串对象的indexof(),substr(),split(),toUpperCase()方法
*/
//方法一 href属性
function Request(strName){
//BOM对象 获取当前页面的url
var strHref = window.document.location.href;
//字符串对象的方法 获取参数字符串开始的位置
var intPos = strHref.indexOf("?");
//取出参数字符串
var strRight = strHref.substr(intPos + 1);
//将多个参数,按照“&”进行分割
var arrTmp = strRight.split("&");
for(var i = 0; i < arrTmp.length; i++){
//将一个参数字符串按照“=”分割成:参数名和参数值
var arrTemp = arrTmp[i].split("=");
if(arrTemp[0].toUpperCase() == strName.toUpperCase())
return arrTemp[1];
}
return "";
}
//方法二 search方法
/*
function Request(sPan){
var sQuery = document.location.search;
if(sQuery.indexOf("?") == 0)
sQuery = sQuery.substr(1);
if(sQuery.indexOf("&") >= 0){
var aQuery = sQuery.split("&");
var sTempQuery;
for (var nTempCount = 0; nTempCount < aQuery.length; nTempCount++){
sTempQuery = aQuery[nTempCount];
if (sTempQuery.indexOf("=") >= 0){
if (sTempQuery.substring(0,sTempQuery.indexOf("=")) == sPan){
//return deCodeURI(sTempQuery.substr(sTempQuery.indexOf("=") + 1)); JavaScript脚本
return sTempQuery.substr(sTempQuery.indexOf("=") + 1); //表单
}
}else
return false;
}
return false;
}else{
if (sQuery.indexOf("=") >= 0){
if (sQuery.substring(0,sQuery.indexOf("=")) == sPan){
//return decodeURI(sQuery.substr(sQuery.indexOf("=") + 1)); JavaScript脚本
return sQuery.substr(sQuery.indexOf("=") + 1);
}else
return false;
}else
return false;
}
}
*/
//页面加载完成后自动运行下面的代码
Rtext=Request("name")
if(Rtext!=""){
myform.name.value=Rtext;
}
通过浏览器cookie
传送数据
发送数据//传送的数据赋值到cookie中
function setCookie(name,value,path)//两个参数,一个是cookie的名子,一个是值
{
//var Days = 30; //此 cookie 将被保存 30 天
//var exp = new Date(); //new Date()("December 31, 9998");
//exp.setTime(exp.getTime() + Days*24*60*60*1000);
//document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
//document.cookie = name + "="+ escape (value) + ";expires=";
//escape()及unescapte()方法已过时,现使用encodeURI()和decodeURI()
document.cookie = name + "="+ encodeURI(value) + ";path="+path+";expires=";
}
//从cookie中取出相应的值
function getCookie(name)
{
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
try{
if(arr != null)
return decodeURI(arr[2]);
return null;
}catch(err){
}
}
//删除cookie中相应的值
function delCookie(name)
{
var exp = new Date()();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//往cookie中添加传送数据
setCookie("name","青山");
跳转
显示数据
显示数据//往cookie中添加传送的数据
function setCookie(name,value,path)//两个参数,一个是cookie的名子,一个是值
{
//var Days = 30; //此 cookie 将被保存 30 天
//var exp = new Date(); //new Date()("December 31, 9998");
//exp.setTime(exp.getTime() + Days*24*60*60*1000);
//document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
//document.cookie = name + "="+ escape (value) + ";expires=";
//escape()及unescapte()方法已过时,现使用encodeURI()和decodeURI()
document.cookie = name + "="+ encodeURI(value) + ";path="+path+";expires=";
}
//从cookie中取出相应的值
function getCookie(name)
{
//正则表达式的运用
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
try{
if(arr != null)
//避免中文乱码问题
return decodeURI(arr[2]);
return null;
}catch(err){
}
}
//删除cookie中相应的值
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//从cookie中获得数据
alert(getCookie("name"));
//删除数据
delCookie("name");
alert("删除?" + getCookie("name"));
post方法提交数据
对于HTML中书写form标签的方法在这里就不写了,下去有兴趣的读者可以自己写一下。下面用的方法是通过Javascript创建节点的方法,具体如下
模板function addForm(){
//创建form标签,并设置相应的属性
var fatherForm = document.createElement("form");
fatherForm.method="post"; //可以设置为get
fatherForm.action="a.html";
//创建第一个input标签,并设置相应的属性
var firstInput = document.createElement("input");
firstInput.type="hidden"; //child1.setAttribute("type","text");
firstInput.name="name";
firstInput.value="青山";
//创建第二个input标签,并设置相应的属性
var secondInput = document.createElement("input");
secondInput.type="hidden";
secondInput.name="sex";
secondInput.value="男";
//将创建的input的节点添加到form标签里
fatherForm.appendChild(firstInput);
fatherForm.appendChild(secondInput);
//将创建的form节点添加到body标签里
//document.getElementById("body").appendChild(father);
document.body.appendChild(fatherForm);
//提交表单
fatherForm.submit();
}
对于post的方法的验证,可以逐步的做,可以先显示创建的节点,然后通过工具查看相应的请求(post或get)
ASP.net页面之间的跳转
asp.net页面之间的跳转有多种思路。思路一:客户端直接进行跳转工作;思路二:服务器端执行相应的服务器端代码进行相应的跳转工作;思路三:浏览器执行服务器端返回的脚本进行跳转。
三种思路,每一种思路都有很多具体的实现,例如:上面get和post就是一些具体的方法。在这里只写一些本人认为重点的内容
不需要执行服务器端代码
1、有javascript参与
修改属性
1、location.href="跳转后的页面.html";
2、window.location="跳转后的页面.html";
3、window.location.href="跳转后的页面.html";
4、document.location="跳转后的页面.html";
执行方法
1、window.open("跳转后的页面.html");
2、表单提交方法
2、无javascript参与
1、跳转到百度
2、
只需要执行服务器端代码
1、response.redirect("answer.aspx?name=aaa&sex=bbb"); //注意,这个可能是第三种情况
2、server.transfer("answer.aspx?name=aaa&sex=bbb");
3、server.execute("answer.aspx?name=aaa&sex=bbb");
区别:
response.redirect():没有站点限制(可以由雅虎服务器跳到新浪服务器);速度慢;当前url显示的路径改变;
transfer()和execute():只能进行站内页面跳转(同一台服务器上);速度快;当前url显示的路径不变;
redirect():可实现*.aspx页面跳转到其它类型页面
transfer():只能进行*.aspx页面之间跳转
execute():把aspx页面上的内容插入到另一个aspx页面最后面
需要服务端和客户端都执行脚本
通过使用Response.Write方法有多种具体的实现,在这里就不写了
1、Response.Write("");
很多浏览器禁止窗口的弹出窗体;目标页面和原页面可以在2个服务器上,原窗口保留,另外新增一个新页面
2、Response.Write("");
新打开的页面,原窗口被代替
asp.net页面之间数据的传递
客户端和服务器端进行数据的交流都是通过post方法或者get方法,这一点在前面也说了,之所以在这里再说,是为了让大家明白清楚,下面的内容。
runat="server" 的意思就是变成控件,变成asp.net的控件,标签元素和控件是不同的东西,在服务器端,控件会进行一个处理,生成具有一些标志的标签元素,然后返回给浏览器,浏览器和服务器端进行交互的时候,都会把这些具有特殊标志的标签元素的所有特性给传过来
asp.net服务器端控件会在客户端请求的时候,被服务器变成标签元素返回给浏览器,浏览器每次和服务器进行交互的时候,都会把这些标签的state返回给服务器端,然后,服务器端解析这些状态,看看是否有相应事件的触发,当然,我们也可以通过后端代码访问这些数据,因为这些数据包含了该“控件”的所有信息,所以,有时会使我们对post和get方法在这里的作用有些迷茫,其实,这些数据都是通过post方法或者get方法实现传递的,至于服务器端是如何解析数据并执行的,我们现在不用管。
一个小测试,说明服务端控件传送state信息。
前端
后端
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("测试内容");
}
结果(方便大家看,这里用的为get方法)
接着说我们ASP.net页面之间数据传输的问题,这里具体的代码就不写了,说一下思路。思路一:前台为主;思路二:后台为主。具体的东西大家可以看一下别人的东西吧!下面是我copy张世栋并简单做了一些修改的东西,大家可以看看
1. 使用QueryString变量
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。但是对于传递数组或对象的话,就不能用这个方法了。
//ask.aspx的代码
protected void Button1_Click(object sender,EventArgs e)
{
//传递的参数包含在URL中,URL的长度有限制
Response.Redirect("answer.aspx?name=天天");
}
//answer.aspx中代码
protectedvoid Page_Load(object sender, EventArgs e)
{
Response.Write(Request.QueryString["name"]);
}
2. 使用Application 对象变量
Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用Lock和UnLock方法来对application对象进行锁定,防止多个用户同时对次此对象进行操作,造成数据混乱。
//ask.aspx的代码
private void Button1_Click(object sender, System.EventArgs e)
{
//类似与哈希表
Application["name"] = "天天";
//使用Server.Transfer跳转页面的时候浏览器显示的地址并没有改变
Server.Transfer("answer.aspx");
}
//answer.aspx中代码
private void Page_Load(object sender, EventArgs e)
{
Application.Lock();
Response.Write(Application["name"].ToString());
Application.UnLock();
}
3. 使用Session变量
其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。
//ask.aspx的代码
private void Button1_Click(object sender, System.EventArgs e)
{
Session["name"] = "天天";
Response.Redirect ("answer.aspx");
}
//answer.aspx中代码
private void Page_Load(object sender, EventArgs e)
{
Response.Write(Session["name"].ToString());
}
4. 使用Cookie对象变量
与Session一样,对每一个用户而言的,Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用
//ask.aspx的代码
private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookiecookieTest = new HttpCookie("name"); //创建cookie对象
cookieTest.Value ="天天"; //给cookie对象赋值
Response.AppendCookie(cookieTest); //保存cookies对象(response.Cookie.Add(CookieName);)
erver.Transfer("answer.aspx");
}
//answer.aspx中代码
private void Page_Load(object sender, EventArgs e)
{
HttpCookie MyCookie= Request.Cookies["name"];//获取Cookie对象
String StrName =MyCookie.Value; //获取其变量值
Response.Write(StrName);
}
5. 使用cache缓存的方式
缓存存在的时间不是太长所以需要慎重使用
//ask.aspx的代码
protected void Button1_Click(object sender,EventArgs e)
{
this.Cache.Insert("name", "天天");
Server.Transfer("answer.aspx");
}
//answer.aspx中代码
protectedvoid Page_Load(object sender, EventArgs e)
{
Response.Write(Cache["name"].ToString());
}
6. 使用Server.Transfer方法
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。
//ask.aspx的代码
public string name
{
get
{
return "天天";
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("answer.aspx");
}
//answer.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
ask a = new ask();
string StrName = a.name;
Response.Write(StrName);
}
方法不仅仅只有上面那些,还有很多种,有兴趣的读者,可以继续做下去。
总结
本篇博客主要写的内容为:静态HTML之间页面的转化;静态HTML之间数据的传递;ASP.net页面之间的转化;ASP.net页面之间数据的传递;静态HTML和ASP.net页面之间的交互。里面的有些内容可能不是做了为一个模块来讲,但是,可以从别的模块中得到,所以在上面的描述中就没有再重复的写了,另外,在静态HTML和ASP.net页面之间交互的解释非常的少,
概述
学习AJAX的过程中,发现自己之前存在着很多的不足,于是花了些时间,总结了一些知识,现在和大家分享一下。
前端和后端,前台和后台
前端和后端指的是客户端和服务器端;前台和后台指的都是客户端上浏览者浏览界面和管理者管理界面。
get和post方法
客户端和服务器端进行数据的传递通过的都是get方法或者post方法。get方法的数据会留在浏览器中新返回页面的url里面;post方法中的数据在浏览器的请求包内的数据内容里面,服务器接收后,如果没有对齐进行处理,那么我们就无法在返回页面中找到相应的数据。
脚本
单纯的说脚本太抽象,从电影的角度说:电影后期编辑时,编辑师根据脚本对拍摄的影像进行剪切,排版,加入特效等等相应的操作;从计算机语言的角度说:HTML文档后期运行时,浏览器根据脚本(客户端脚本)对HTML进行相应动态的处理和显示。具体让我用一句话来说的话,脚本就是可以加工成型东西的机制。
纯HTML页面之间数据传递和使用
叙述
单单使用html标签进行数据的传递和使用(特指)是不可能实现的,所以,这里说的“纯”是可以有客户端脚本的HTML页面,当然,另一个隐含的意思就是,这里没有后台脚本等等的参与,所以,你直接把数据提交给服务器,这个方法是不管用的,也就是说post方法不可以实现纯HTML页面之间数据传递(可以)和使用(不可以),在这里本人也会给出相应post方法的数据传递的实现代码,好了,接着说本块的这个话题。
如何实现这个该功能呢?有什么方法呢?一个思路是通过get方法;另一个思路是通过浏览器中的cookie。
通过get方法
传递数据的页面代码(通过3种方法实现,其它的大家自己再想一想,本句不再重复)
利用链接标签a手动拼接url链接
利用javascript手动拼接url//JavaScript中写window.open("test3.html?name=qingshan&key=qingshan");弹出窗口一般不行
function Post(){
url="获得url中的参数.html?name=" + encodeURI(document.getElementById("name").value);
//页面跳转,并在url中传递数据
location.href=url; //location为对象
//window.location.href=url; location为对象
//window.location=url; location为属性
//document.location=url;
}
利用form表单自动拼接url姓名:
性别:
接收并显示数据
获得url中的参数/*
1、从 URL 字符串中提取变量的值
2、字符串对象的indexof(),substr(),split(),toUpperCase()方法
*/
//方法一 href属性
function Request(strName){
//BOM对象 获取当前页面的url
var strHref = window.document.location.href;
//字符串对象的方法 获取参数字符串开始的位置
var intPos = strHref.indexOf("?");
//取出参数字符串
var strRight = strHref.substr(intPos + 1);
//将多个参数,按照“&”进行分割
var arrTmp = strRight.split("&");
for(var i = 0; i < arrTmp.length; i++){
//将一个参数字符串按照“=”分割成:参数名和参数值
var arrTemp = arrTmp[i].split("=");
if(arrTemp[0].toUpperCase() == strName.toUpperCase())
return arrTemp[1];
}
return "";
}
//方法二 search方法
/*
function Request(sPan){
var sQuery = document.location.search;
if(sQuery.indexOf("?") == 0)
sQuery = sQuery.substr(1);
if(sQuery.indexOf("&") >= 0){
var aQuery = sQuery.split("&");
var sTempQuery;
for (var nTempCount = 0; nTempCount < aQuery.length; nTempCount++){
sTempQuery = aQuery[nTempCount];
if (sTempQuery.indexOf("=") >= 0){
if (sTempQuery.substring(0,sTempQuery.indexOf("=")) == sPan){
//return deCodeURI(sTempQuery.substr(sTempQuery.indexOf("=") + 1)); JavaScript脚本
return sTempQuery.substr(sTempQuery.indexOf("=") + 1); //表单
}
}else
return false;
}
return false;
}else{
if (sQuery.indexOf("=") >= 0){
if (sQuery.substring(0,sQuery.indexOf("=")) == sPan){
//return decodeURI(sQuery.substr(sQuery.indexOf("=") + 1)); JavaScript脚本
return sQuery.substr(sQuery.indexOf("=") + 1);
}else
return false;
}else
return false;
}
}
*/
//页面加载完成后自动运行下面的代码
Rtext=Request("name")
if(Rtext!=""){
myform.name.value=Rtext;
}
通过浏览器cookie
传送数据
发送数据//传送的数据赋值到cookie中
function setCookie(name,value,path)//两个参数,一个是cookie的名子,一个是值
{
//var Days = 30; //此 cookie 将被保存 30 天
//var exp = new Date(); //new Date()("December 31, 9998");
//exp.setTime(exp.getTime() + Days*24*60*60*1000);
//document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
//document.cookie = name + "="+ escape (value) + ";expires=";
//escape()及unescapte()方法已过时,现使用encodeURI()和decodeURI()
document.cookie = name + "="+ encodeURI(value) + ";path="+path+";expires=";
}
//从cookie中取出相应的值
function getCookie(name)
{
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
try{
if(arr != null)
return decodeURI(arr[2]);
return null;
}catch(err){
}
}
//删除cookie中相应的值
function delCookie(name)
{
var exp = new Date()();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//往cookie中添加传送数据
setCookie("name","青山");
跳转
显示数据
显示数据//往cookie中添加传送的数据
function setCookie(name,value,path)//两个参数,一个是cookie的名子,一个是值
{
//var Days = 30; //此 cookie 将被保存 30 天
//var exp = new Date(); //new Date()("December 31, 9998");
//exp.setTime(exp.getTime() + Days*24*60*60*1000);
//document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
//document.cookie = name + "="+ escape (value) + ";expires=";
//escape()及unescapte()方法已过时,现使用encodeURI()和decodeURI()
document.cookie = name + "="+ encodeURI(value) + ";path="+path+";expires=";
}
//从cookie中取出相应的值
function getCookie(name)
{
//正则表达式的运用
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
try{
if(arr != null)
//避免中文乱码问题
return decodeURI(arr[2]);
return null;
}catch(err){
}
}
//删除cookie中相应的值
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//从cookie中获得数据
alert(getCookie("name"));
//删除数据
delCookie("name");
alert("删除?" + getCookie("name"));
post方法提交数据
对于HTML中书写form标签的方法在这里就不写了,下去有兴趣的读者可以自己写一下。下面用的方法是通过Javascript创建节点的方法,具体如下
模板function addForm(){
//创建form标签,并设置相应的属性
var fatherForm = document.createElement("form");
fatherForm.method="post"; //可以设置为get
fatherForm.action="a.html";
//创建第一个input标签,并设置相应的属性
var firstInput = document.createElement("input");
firstInput.type="hidden"; //child1.setAttribute("type","text");
firstInput.name="name";
firstInput.value="青山";
//创建第二个input标签,并设置相应的属性
var secondInput = document.createElement("input");
secondInput.type="hidden";
secondInput.name="sex";
secondInput.value="男";
//将创建的input的节点添加到form标签里
fatherForm.appendChild(firstInput);
fatherForm.appendChild(secondInput);
//将创建的form节点添加到body标签里
//document.getElementById("body").appendChild(father);
document.body.appendChild(fatherForm);
//提交表单
fatherForm.submit();
}
对于post的方法的验证,可以逐步的做,可以先显示创建的节点,然后通过工具查看相应的请求(post或get)
ASP.net页面之间的跳转
asp.net页面之间的跳转有多种思路。思路一:客户端直接进行跳转工作;思路二:服务器端执行相应的服务器端代码进行相应的跳转工作;思路三:浏览器执行服务器端返回的脚本进行跳转。
三种思路,每一种思路都有很多具体的实现,例如:上面get和post就是一些具体的方法。在这里只写一些本人认为重点的内容
不需要执行服务器端代码
1、有javascript参与
修改属性
1、location.href="跳转后的页面.html";
2、window.location="跳转后的页面.html";
3、window.location.href="跳转后的页面.html";
4、document.location="跳转后的页面.html";
执行方法
1、window.open("跳转后的页面.html");
2、表单提交方法
2、无javascript参与
1、跳转到百度
2、
只需要执行服务器端代码
1、response.redirect("answer.aspx?name=aaa&sex=bbb"); //注意,这个可能是第三种情况
2、server.transfer("answer.aspx?name=aaa&sex=bbb");
3、server.execute("answer.aspx?name=aaa&sex=bbb");
区别:
response.redirect():没有站点限制(可以由雅虎服务器跳到新浪服务器);速度慢;当前url显示的路径改变;
transfer()和execute():只能进行站内页面跳转(同一台服务器上);速度快;当前url显示的路径不变;
redirect():可实现*.aspx页面跳转到其它类型页面
transfer():只能进行*.aspx页面之间跳转
execute():把aspx页面上的内容插入到另一个aspx页面最后面
需要服务端和客户端都执行脚本
通过使用Response.Write方法有多种具体的实现,在这里就不写了
1、Response.Write("");
很多浏览器禁止窗口的弹出窗体;目标页面和原页面可以在2个服务器上,原窗口保留,另外新增一个新页面
2、Response.Write("");
新打开的页面,原窗口被代替
asp.net页面之间数据的传递
客户端和服务器端进行数据的交流都是通过post方法或者get方法,这一点在前面也说了,之所以在这里再说,是为了让大家明白清楚,下面的内容。
runat="server" 的意思就是变成控件,变成asp.net的控件,标签元素和控件是不同的东西,在服务器端,控件会进行一个处理,生成具有一些标志的标签元素,然后返回给浏览器,浏览器和服务器端进行交互的时候,都会把这些具有特殊标志的标签元素的所有特性给传过来
asp.net服务器端控件会在客户端请求的时候,被服务器变成标签元素返回给浏览器,浏览器每次和服务器进行交互的时候,都会把这些标签的state返回给服务器端,然后,服务器端解析这些状态,看看是否有相应事件的触发,当然,我们也可以通过后端代码访问这些数据,因为这些数据包含了该“控件”的所有信息,所以,有时会使我们对post和get方法在这里的作用有些迷茫,其实,这些数据都是通过post方法或者get方法实现传递的,至于服务器端是如何解析数据并执行的,我们现在不用管。
一个小测试,说明服务端控件传送state信息。
前端
后端
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write("测试内容");
}
结果(方便大家看,这里用的为get方法)
接着说我们ASP.net页面之间数据传输的问题,这里具体的代码就不写了,说一下思路。思路一:前台为主;思路二:后台为主。具体的东西大家可以看一下别人的东西吧!下面是我copy张世栋并简单做了一些修改的东西,大家可以看看
1. 使用QueryString变量
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。但是对于传递数组或对象的话,就不能用这个方法了。
//ask.aspx的代码
protected void Button1_Click(object sender,EventArgs e)
{
//传递的参数包含在URL中,URL的长度有限制
Response.Redirect("answer.aspx?name=天天");
}
//answer.aspx中代码
protectedvoid Page_Load(object sender, EventArgs e)
{
Response.Write(Request.QueryString["name"]);
}
2. 使用Application 对象变量
Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用Lock和UnLock方法来对application对象进行锁定,防止多个用户同时对次此对象进行操作,造成数据混乱。
//ask.aspx的代码
private void Button1_Click(object sender, System.EventArgs e)
{
//类似与哈希表
Application["name"] = "天天";
//使用Server.Transfer跳转页面的时候浏览器显示的地址并没有改变
Server.Transfer("answer.aspx");
}
//answer.aspx中代码
private void Page_Load(object sender, EventArgs e)
{
Application.Lock();
Response.Write(Application["name"].ToString());
Application.UnLock();
}
3. 使用Session变量
其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。
//ask.aspx的代码
private void Button1_Click(object sender, System.EventArgs e)
{
Session["name"] = "天天";
Response.Redirect ("answer.aspx");
}
//answer.aspx中代码
private void Page_Load(object sender, EventArgs e)
{
Response.Write(Session["name"].ToString());
}
4. 使用Cookie对象变量
与Session一样,对每一个用户而言的,Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用
//ask.aspx的代码
private void Button1_Click(object sender, System.EventArgs e)
{
HttpCookiecookieTest = new HttpCookie("name"); //创建cookie对象
cookieTest.Value ="天天"; //给cookie对象赋值
Response.AppendCookie(cookieTest); //保存cookies对象(response.Cookie.Add(CookieName);)
erver.Transfer("answer.aspx");
}
//answer.aspx中代码
private void Page_Load(object sender, EventArgs e)
{
HttpCookie MyCookie= Request.Cookies["name"];//获取Cookie对象
String StrName =MyCookie.Value; //获取其变量值
Response.Write(StrName);
}
5. 使用cache缓存的方式
缓存存在的时间不是太长所以需要慎重使用
//ask.aspx的代码
protected void Button1_Click(object sender,EventArgs e)
{
this.Cache.Insert("name", "天天");
Server.Transfer("answer.aspx");
}
//answer.aspx中代码
protectedvoid Page_Load(object sender, EventArgs e)
{
Response.Write(Cache["name"].ToString());
}
6. 使用Server.Transfer方法
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。
//ask.aspx的代码
public string name
{
get
{
return "天天";
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("answer.aspx");
}
//answer.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
ask a = new ask();
string StrName = a.name;
Response.Write(StrName);
}
方法不仅仅只有上面那些,还有很多种,有兴趣的读者,可以继续做下去。
总结
本篇博客主要写的内容为:静态HTML之间页面的转化;静态HTML之间数据的传递;ASP.net页面之间的转化;ASP.net页面之间数据的传递;静态HTML和ASP.net页面之间的交互。里面的有些内容可能不是做了为一个模块来讲,但是,可以从别的模块中得到,所以在上面的描述中就没有再重复的写了,另外,在静态HTML和ASP.net页面之间交互的解释非常的少,
标签:
相关推荐:
最新新闻:
- 【聚看点】JVM常用配置参数有哪些?40道面试题解答
- javascript学习笔记:get和post方法
- 膜结构车棚使用的材料有哪些?车棚膜结构使用膜材选择分析解析
- 《蝙蝠侠前传3:黑暗骑士崛起》蓝光高清720P1080P下载
- py前端构建学习中的pcrbox第一版:天天热议
- 凡音L2怎么样?凡音L2蓝牙后挂耳机评测|天天观速讯
- 世界最资讯丨天天动听有电脑版吗?免费的手机音乐播放器下载
- 每日消息!电脑配机有哪些注意事项?电脑配机方案方法详
- 什么是负载均衡器?负载均衡器有什么作用?-今热点
- Windows系统如何使用光标键来移动?windows使用光标键方法 全球微头条
- 怎么设置电信光纤猫的无线网络?光纤猫的无线网络设置流程
- 当前速递!虚拟主机空间是什么?虚拟主机空间有什么用途?
- 【全球播资讯】iPhone手势插件Activator怎么用?详细的使用方法
- 环球快播:蚂蚁森林给别人浇水有什么好处?详细介绍
- 全球观点:怎样修复ie浏览器?IE游览器的修复方法
- 通过Chrome来知道提交加价的请求应该是什么?_今日观点
- 索尼电视机故障怎么办?索尼电视机维修方法|全球观热点
- ro商用纯水机净化效果好不好?ro商用纯水机特点介绍
- 母亲节送什么好_母亲节送妈妈七大类型礼物_每日视点
- C语言中的double是什么意思?直击PHP的异常和错误处理
- “平均数”到底是什么意思?加权平均数又是什么意思?_世界独家
- 手机wifi连接上但不能上网怎么办?解决方法步骤 重点聚焦
- javascript索引是什么?javascript索引的概念及技巧
- 当前热门:二手笔记本多少钱?二手笔记本价格详解
- 【焦点热闻】世界上最简洁的人脸识别库:face_recognition
- 触手tv怎么直播?触手tv直播的方法-当前焦点
- 电子硬盘多少钱?市场上电子硬盘价格详情
- 舍入模式有哪些?八种舍入模式的解释 每日视讯
- 如何下载Navicat数据库管理编辑软件?如何打开.db数据库文件? 世界头条
- FB是什么意思?PCB原理图中的FB是什么意思?
- 美能达283复印机扫描怎么设置?柯尼卡美能达打印机的设置方法
- QQ象棋java通用版怎么下载?QQ中国象棋官方免费版下载
- 【全球速看料】启动定时器t0的工作指令是什么?PLC通电延时定时器(TON)应用举例
- dm-verity是如何保证安全的?dm-verity-ramdisk文件系统校验的解决方法:今日关注
- 怎么修改苹果id密码?苹果id密码修改教程-全球微资讯
- 马赛克电视墙如何设计?马赛克电视墙设计要点|当前视讯
- 豆丁网怎么免费下载?豆丁网文档下载软件:当前通讯
- 如何进行正交试验设计?试验设计—正交表的使用方法:每日时讯
- 全球最资讯丨如何在windows上交叉编译ffmpeg?具体操作步骤
- 全球热讯:Spring之AOP|使用场景、原理、配置、使用方式
- 好用的RPA流程自动化软件有哪些?详情介绍 每日时讯
- 《孤岛惊魂6》将于2月16日在全平台开启免费试玩
- 【环球报资讯】RAM展示概念图 或推出电动皮卡
- 环球观速讯丨RTX4060!机械革命游戏本只要6199
- 基于体温监测 三星手表将推出经期管理功能
- 健康度掉太快 三星升级990Pro固件-最新资讯
- 2022年度智能穿戴设备创新排行榜发布 智能健康穿戴驶入快车道
- 兄弟管道官网发现《超级马里奥兄弟大电影》隐藏海报 全球快消息
- 渠道商预售 AMD游戏神U锐龙7000 144MB缓存版:每日消息
- 南宁一男子商场内刺伤一女子后投江!警方通报
- 2019立秋为什么吃饺子 立秋适合吃饺子吗
- 《战神》总监承认同伴破坏解谜体验:做的时候没想到-每日速递
- 2023年情人节单日票房破两亿 《满江红》领跑|当前速递
- 每日速看!永安林业违反会计准则 被出具警示函
- 世界最资讯丨XGPU和EA Play会员已可试玩《狂野之心》 时长约10小时
- 【世界热闻】上海迪士尼度假区与三星电子达成推广合作, 庆祝三星新品手机发布
- 程序员的好帮手?网友开始尝试用ChatGPT开发游戏
- 索尼正在研究如何把PS5塞进桌斗里:抱着送人太沉了|资讯
- 天天要闻:早期版的《战神5》 奎爷曾被雷神杀死
- “超时空办公”时代已来 联想发布智慧办公白皮书 每日时讯
- 【聚看点】拓界影像稳劲性能 三星Galaxy S23系列旗舰手机国内发布
- 即时:外国女孩穿汉服COS东方美人 网友感慨:这波中华文化输出赢麻了
- 滤镜景点诈骗又来了!7朵郁金香撑起上海武康路流量
- 速递!“逆城市”建设类游戏《伊始之地》宣传片公开
- 伊朗外交部发言人:总统莱希访华将加强伊中关系
- 当前关注:关于国际市场营销案例分析
- 世界观热点:爸爸因姜姓难取名给孩子叫去寒 网友吐槽略随意
- 当前看点!剧版《最后生还者》致敬游戏第二部彩蛋:乔尔同款背包
- 暗影精灵9Plus高能版预售 酷睿i7+RTX 4070 10999元
- 焦点速递!不止情人节,三星BESPOKE缤色铂格系列家电守护浪漫每一天
- 环球快看点丨CT检查激增,海信智慧阅片室助力三甲医院“阅图”效率提升
- 以爱为名 浪漫相伴 尼康精选挚爱佳作献礼甜蜜情人节
- 情人节送什么礼物? 购铭瑄RTX3060及以上显卡获赠《穿越火线》稀有礼包
- 情人节好礼! 购映众显卡赠《穿越火线》限定豪礼
- 环球资讯:《霍格沃茨之遗》御剑飞行:这才是飞行扫帚正确用法