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页面之间交互的解释非常的少,
标签:
相关推荐:
精彩放送:
- []全球热资讯!世界十大最可爱动物排名公布:小猫占据第一名!
- []每日讯息!活动横幅样式有哪些?一般组织出去活动用的横幅尺寸是多大?
- []基金账户一站式打通 股票资产能否接力“贯通”
- []视点!纪信城隍庙在哪?关于纪信城隍庙你知道多少?
- []环球微资讯!化学元素周期表口诀歌有声版 化学元素周期表口诀
- []世界最资讯丨2022年清华北大录取分数线公布!上清北最低需要多少分?
- []天天热头条丨传说中的七星刀到底有多厉害?七星刀详情介绍
- []天天热资讯!sign是什么意思?sign的用法有哪些?
- []除了but还有however 它的短语有哪些?
- []环球播报:35亿美元!宁德时代和福特美国合资建厂细节敲定?
- []今日关注:宁州古迹你去过吗?宁州古迹的详情介绍
- []aoc显示器亮度怎么调?aoc显示器怎么调节亮度?
- []快资讯丨jay是什么意思?jay的用法你知道吗?
- []全球微动态丨小痰盂镜头适合拍什么(小痰盂镜头)
- []全球快播:35岁陈赫晒与女儿合照 张子萱低调出镜 与许婧曾相伴多年
- []世界快看:迅雷下载速度慢了怎么解决?迅雷下载速度慢的解决方法
- []全球讯息:户用光伏+高电价,户用储能已成新赛道?
- []全球资讯:瑞浦兰钧储能业务再下一城
- []当前速看:索尼电视机故障怎么办?索尼电视机维修方法
- []微头条丨怎么设置电信光纤猫的无线网络?光纤猫的无线网络设置流程
- []焦点日报:二手笔记本多少钱?二手笔记本价格详解
- []热讯:触手tv怎么直播?触手tv直播的方法
- []【世界热闻】蚂蚁森林给别人浇水有什么好处?详细介绍
- []世界热门:各种常见排序算法实现 常见排序算法汇总
- []当前热议!马赛克电视墙如何设计?马赛克电视墙设计要点
- []凡音L2怎么样?凡音L2蓝牙后挂耳机评测
- []世界观察:什么是负载均衡器?负载均衡器有什么作用?
- []专升本英语——学习笔记(定语从句)
- []控制寄存器和命令寄存器的英文理解(一)
- []奥地利防长:不会为乌克兰提供“豹2”坦克培训
- []天天热讯:手机wifi连接上但不能上网怎么办?解决方法步骤
- []焦点短讯!反间计你知道吗?史上最经典的10大反间计
- []用Python3实现dota改建精灵——python库
- []VR技术:打破传统呈现创新性的虚拟三维动画
- []长安信用卡好申请吗(长安信用卡怎么开通)
- []如何解决电脑弹窗问题?四种弹窗拦截工具的使用方法
- []最资讯丨hplaserjetp1008打印机驱动安装失败怎么办?解决方法步骤
- []全球快消息!豆芽是怎么生长的?豆芽的生长过程观察日记
- []实时焦点:工业机器人技术全解析 工业机器人的发展背景及应用场景
- []热点聚焦:《龙文鞭影》里面写了啥?《二十四史》里的人物典故
- []当前热门:iPhone手势插件Activator怎么用?详细的使用方法
- []全球热点!2022年锂电储能技术占比达94.2% 仍处绝对主导地位
- []焦点!怎样修复ie浏览器?IE游览器的修复方法
- []今日聚焦!国家能源局:五大原因推动全国新型储能装机规模持续快速增长
- []豆丁网怎么免费下载?豆丁网文档下载软件
- []今日聚焦!Windows系统如何使用光标键来移动?windows使用光标键方法
- []当前短讯!虚拟主机空间是什么?虚拟主机空间有什么用途?
- []世界热资讯!求正弦函数的值怎么算?python求正弦函数的值
- []美能达283复印机扫描怎么设置?柯尼卡美能达打印机的设置方法
- []【世界时快讯】中国互联网10大平台 2010年中国互联网十大开放平台大盘点
- []热点评!天天动听有电脑版吗?免费的手机音乐播放器下载
- []JAVA模拟器安装方法 JAVA模拟器全功略!
- []天天通讯!电子硬盘多少钱?市场上电子硬盘价格详情
- []【天天新要闻】怎么修改苹果id密码?苹果id密码修改教程
- []环球最资讯丨高中数学:等差数列、等比数列和求和公式
- []焦点热议:市场价7折出售,认购率仅2.7%!福州人才房为何“受冷落”?
- []全球要闻:第一章begining c语言中的变量与对象
- []全球微头条丨泛海控股:计提违约金等约55亿元,正与会计师事务所沟通2022年财务情况
- []【全球报资讯】ro商用纯水机净化效果好不好?ro商用纯水机特点介绍
- []【世界热闻】电脑配机有哪些注意事项?电脑配机方案方法详
- []每日热讯!怎么打开优酷的kux格式?kux转换成mp4的方法
- []环球热推荐:维纳滤波是最优的线性滤波器 矩阵&向量的求导方法
- []当前快讯:软件更新方法有哪些?软件更新方法远程更新
- []天天快消息!上海“最牛业委会”负责人:几百、几千一笔笔账,4000万是这样追回的
- []观点:信德新材:公司高度重视技术创新和研发投入,公司将结合自身业务情况,密切关注相关技术的发展及应用
- []全球聚焦:鼠标光标形态 人体工学鼠标到底值不值得买?
- []天天热议:中矿资源拟取得 URT锂矿项目51%权益
- []世界焦点!苏奥传感:疫情放开后,我们会根据龙微的业务发展情况,从对公司最有利的角度,去审慎的实施相应的收购并购
- []全球热议:香溢融通索赔时效即将到期 律师:投资者勿错过挽回损失的机会
- []【天天新要闻】农行为什么推荐办信用卡(农行为什么推荐办信用卡)
- []世界时讯:李嘉诚每年换血怎么回事 李嘉诚资产12万亿?
- []快看点丨摩托车商业险一定要买吗(摩托车商业险一定要买吗)
- []环球微资讯!用别人医保卡能查出来吗(用别人的医保卡能被发现吗)
- []每日看点!游客跟团遭套路,旅游城市经不起一再“折腾”
- []楼市最新消息!广州今年首批供地出炉,深圳二手房成交大涨…
- []外汇交易提醒:美元冲高回落,市场对美国CPI预期产生分歧
- []环球今头条!中国人寿员工离职后养老金(中国人寿员工离职养老金怎么领)
- []全球聚焦:农业银行手机银行房贷提前还款怎么操作(农业银行手机银行房贷提前还款怎么操作)
- []环球报道:贵阳银行环球白金信用卡的年费是多少(贵阳银行环球白金信用卡的年费)
- []【全球时快讯】梅尔滕斯
- []世界头条:续贷认证使用哪个支付宝(续贷还需要支付宝上绑卡吗)
- []意外险9级伤残可赔付(意外险九级伤残可赔付)
- []观点:住院医保报销后低保还可以报吗(住院医保报销完低保还能保吗)
- []定点药店买药报销有起付线吗(药店买药统筹起付线)
- []可以在还款日当天办分期吗(信用卡还款日当天可以分期吗)
- []焦点热文:时时服务:截至2022年底止9个月收益3.86亿港元 毛利率降至17.3%
- []企业保险个人缴费比例
- []彩讯股份: 公司与百度在部分项目上已有相关合作,未来也将进一步探讨更多合作的可能
- []焦点热讯:重疾新规什么时候实施
- []天天速讯:养老保险比例2020
- []涉水险赔偿范围和金额
- []全球焦点!航班延误险理赔标准
- []世界动态:酸辣土豆丝的做法
- []工会工作先进单位事迹材料_工会先进集体事迹材料
- []焦点快看:漂水把衣服漂红怎么办
- []当前头条:助学贷款申请失败可以重新申请吗(融e借申请失败重新申请)
- []【世界新视野】支付宝有车可以贷款吗(支付宝有车可以贷款吗)
- []美亚柏科:截止2023年2月10日收盘,公司股东总户数36,912户
- []有胆结石能买保险吗(胆结石保险能报吗)
- []环球速读:国足主帅定了?是他?
- javascript学习笔记:get和post方法
- 全球快播:中荣股份:公司上市募集资金主要用于产能扩建项目及仓库扩建项目
- 当前短讯!现代汉语词典丨好的拼音怎么拼写声调?
- 神马股份:公司年报预告数据仅为初步核算数据,具体准确的财务数据以公司正式披露的2022年年度报告为准
- 全球快报:河南汝州:哈喇鲁虎哥赤墓——蒙汉历史文化的见证
- 上市是什么意思?企业上市有啥好处?
- 世界观天下!胡佛大坝:如此雄伟的大坝 为何以一位毫无建树的总统命名?
- b站邀请码怎么输入?b站邀请码怎么获得?
- 【焦点热闻】冠捷科技:公司始终着力于加大创造消费新场景的投资,创新打造智能化、数字化的全屏视讯生态
- 世界最新:家庭科学小实验简单操作 家庭科学小实验大全
- 每日热讯!上海艾录:2月10日公司高管陈曙减持公司股份合计10000股
- 当前速递!有研硅2022年度净利3.51亿同比增长136.8% 产品产销售量提升
- 当前动态:旭辉控股1月合同销售金额约50.2亿元 同比减少40.52%
- 长川科技:2月10日公司高管韩笑减持公司股份合计1.67万股
- 天天即时:ST开元:2月10日公司高管江勇减持公司股份合计49万股
- 华亚智能:2月10日公司高管韩旭鹏减持公司股份合计900股
- 今日热搜:tomo放疗能报销吗(2022年tomo放疗可以报销吗)
- 【全球新视野】农业银行 积分规则(农行积分怎么使用)
- 今日热议:新房周报 | 仅2城调控放松,成交继续回升(02.06-02.12)
- 世界热点!评司论企|再添杭州TOD项目,越秀“轨道+物业”模式优势释放
- 即时焦点:北京将支持头部企业打造对标ChatGPT的大模型
- 全球快看点丨联东1.3亿三市拿地256亩,头部产业地产商持续扩张 - 1月国内工业用地拿地中标汇总
- 天天最新:悦安新材:2月9日公司高管于缘宝减持公司股份合计4.8万股
- 天天快讯:半年关闭2000个网点?韵达快递辟谣“倒闭”传闻 却难以辩驳“网点寒心”
- 【天天报资讯】土地周报 | 杭州、北京带动市场热度回温,地市供应持续低迷(02.06-02.12)
- 焦点报道:富信科技:2月10日公司高管曹卫强减持公司股份合计10000股
- 拉菲草是什么材料做的
- 平安福交通意外赔付(平安福交通意外几倍赔偿)
- 世界快讯:兴业银行信用卡分期提前还款(兴业银行信用卡提前还款怎么弄)
- 农保缴纳两年后可以退保吗(农保申请退保要多久)
- 世界快看点丨泛海控股回复关注函:未对控股股东及其关联方违规提供财务资助
- 远信工业:竞得地块使用权 用于建设高端印染装备制造项目
- 天天动态:现代投资拟参与竞拍长沙银行1.39亿股 占总股本3.46%
- 每日热文:天赐材料:公司的六氟磷酸钠产品项目正在稳步推进中,会根据市场情况及时调整项目建设进度
- 泛海控股回复关注函:计提利息、罚息及迟延履行违约金55亿元
- 要闻:贵安:鼓励、引导执行首套房首付20% 一套房并结清贷款的执行首套房贷政策
- 前沿热点:广宇发展:公司在资源获取时除考虑收益率外,也会重点关注送出消纳问题,确保项目建设完成后能够及时并网
- 当前快看:金富科技: 第三届董事会第六次临时会议公告
- 房贷可还到80岁了?多家银行回应
- 天天动态:家居丨中源家居:股东高盛投资拟减持不超过160万股股份
- 环球热文:新洋丰:项目在建设过程中存在一定的不可预见性,公司正在加快推进项目建设进度,力争早日建成投产
- 【独家】武商集团:皇经堂拆迁事项尚在洽商中
- 【天天新要闻】宅男财经|房贷年龄可延至80岁?听听专家怎么说
- 全球短讯!奥飞娱乐:公司目前持有北京光年无限科技有限公司5%股权
- 财面儿丨龙湖集团:1月份实现总合同销售金额人民币108.3亿元
- 衡水市武强县开展土地托管集中经营“托”起乡村振兴致富梦
- 全球热推荐:被诈骗,银行卡以后还能贷款吗(被诈骗,银行卡以后还能贷款吗)
- 全球快资讯:工商银行信用卡商户卡是什么卡(工商银行官方网站信用卡)
- 【报资讯】人民银行社保转地方社保怎么转(人民银行社保转地方社保)
- 【天天热闻】进军储能赛道!深电能携手比亚迪等股东成立储能公司
- 世界今日讯!兴业逾期4天会怎么样(兴业逾期4天会怎么样)
- 观焦点:港铁小蚝湾第一期发展项目流标 长实、会德丰均投标
- 要闻速递:中方:去年以来,美方高空气球10余次非法飞越中国领空
- 20保利发展MTN001将于2月24日付息
- 【独家焦点】漳州发展:截止2023年2月10日,公司股东人数约为5.0万户
- 当前滚动:温州生态园集团5.4亿元私募项目更新为"已反馈"
- 全球最资讯丨百度:类 ChatGPT 应用“文心一言”将于3月问世
- 中装建设:公司暂未在土耳其、叙利亚开展业务
- 普元信息:公司持续探索自动化技术、人工智能与公司产品技术的结合场景及未来的发展方向
- 福建出台“促消费”十条举措:全力支持居民首套和改善性住房需求
- 当前消息!保力新:公司的主营业务不涉及摄像头安防设备和大数据领域
- 光伏逆变器制造,又一家央企!
- 天天快播:公积金贷款什么时候面签(公积金贷款什么时候面签)
- 世界球精选!在上海交了两年社保有用吗(在上海交了10年社保能退休吗)
- 环球观速讯丨橙享花是正规平台吗(橙易花是正规平台吗)
- 全球观点:涉及光伏项目9个!江苏省发布2023年重大项目名单
- 环球快资讯:特变电工入围甘肃定西“十四五”第二批陇西县100MW集中式光伏竞配项目
- 环球精选!NYMEX原油短线下看77.98美元
- 世界新资讯:2月13日鸿博股份涨停分析:AIGC概念,人工智能,小家电概念热股
- 每日看点!泰坦股份:根据相关披露规则要求,公司在定期报告中披露股东人数,请及时关注
- 焦点报道:2月13日海兴电力涨停分析:泛在电力物联网,充电桩,工业互联网概念热股
- 全球快看:泰安城发投资拟发行10亿元中期票据 期限3+N年
- 保利置业15亿元公司债将于2月20日付息 利率2.99%
- 焦点快看:杭州景元投资退出山西中正地产 山西中正实业接盘
- 世界热议:福建晋江工业园区开发公司7.6亿元绿色债将付息 利率4.00%
- 天天时讯:欧佩克:预计2023年全球石油需求将超过疫情前水平
- 天地源下属公司为股东提供总额不超3亿借款
- 2月13日乐惠国际涨停分析:啤酒,C2M概念热股
- 全球速讯:国际油价跌约1%,美国炼厂运营规模步入重要调整期
- 今日热文:2月13日天娱数科涨停分析:化妆品,ChatGPT,AIGC概念概念热股
- 世界聚焦:广东储能电力现货交易机制17问!
- 当前聚焦:河北武强开展土地托管集中经营“托”起乡村振兴致富梦
- 天天热门:三一重能于湖南郴州新设储能科技子公司
- 速讯:交通银行信用卡从哪里寄出来的(交通银行信用卡邮寄到哪)
- 深圳发布支持新型储能发展20条:通过虚拟电厂拓展储能商业模式
- 广州推出2023年首批集中供地,23宗地总用地面积134.53公顷
- 美联楼价指数按周升0.45% 连升六星期
- 世界即时看!机构:2023年第7周,重点城市二手住宅成交量环比上涨27.26%
- 天天要闻:湖北联投60亿元私募债获上交所受理
- 北京建工拟下调“20建工01”第4及第5年票面利率 现为3.20%
- 江苏国信:我公司无大数据、服务器、软件、元宇宙方面的投资
- * 高管轮番减持,新东方在线盘中重挫20%
- 观点:恒久科技:公司的主营业务涉及“影像耗材+信息安全”两大产业
- 今日热搜:储能产业链五大趋势研判
- 每日视点!最近为什么市场上时长4小时的电池储能电站越来越多?
- 全球今头条!钠电池应用“谋准”储能
- 又一新型长时电池储能技术走上商业化道路!
- 社保贷款有什么影响(社保贷款有什么影响吗)
- 【环球报资讯】中能布隆吉60兆瓦储能电站介绍
- 【全球播资讯】绿岛风:公司2022年度利润分配预案届时请关注今年4月27日的董事会决议公告、年报等信息
- 天天热议:老白干酒:请参阅以前的不要重复提问
- 当前热点-帝欧家居:截至目前,公司暂未引进灯具类业务进行搭配销售
- 焦点快看:深圳市:鼓励存量土地和房屋、绿化用地、地下空间、建筑屋顶等兼容建设体育场地设施
- 雅生活与雅居乐修订关联协议 若未能支付应付款项时可以资产抵销
- 全球微头条丨上涨8-9分/W! 通威电池片涨价
- 世界热文:医保交的基数高有什么好处(医保缴得多有什么好处)
- 当前讯息:拉萨两个出发航班剧烈颠簸多次下坠?航司和机场回应
- 今热点:浦发银行可以直接用网银吗(浦发银行可以直接用网银吗)
- 世界观速讯丨储能成投融资黄金赛道
- 世界速读:看饿了!基金经理直播调研预制菜 观看量超60万!基金实地调研“跑断腿” 什么信号?