zoukankan      html  css  js  c++  java
  • 3. 什么叫postback

    当我们直接从服务端读取网页时,表时此网页并没有post(提交),当用户再次提交表单时,就会把此网页的相关参数传给服务器处理,对于服务器来说就是一个postback(提交返回),即提交回来了。这就是postback.

    在网页开发时这个很重要,用户第一次加载时就不是postback,当用户把相同的网页提交给服务端时就是postback.

    我们建立如下测试程序,先建一个模板,即一个带form的表单,它里面放上一个textbox和一个submit按钮。当点击按钮时会把textbox的值传给服务端的程序来处理,服务端根据是第一次加载还是再次提交返回给用户,当然服务端会把此模板返回回来。

    注意模块是不直显示的,即我们在网页打开时是直接打开这个处理程序的网址,它会加载模板,然后会根据模板中返回的信息再提交给客户端,好像同一个页面一样。

       1.模板

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
    </head>
    <form action="HandlerHello1.ashx" method="post">
      <body>
        <input type="hidden" name="ispostback" value="true" />
        姓名:<input type="text" name="UserName" value="@value" />
        <br />
        <input type="submit" name="vvv" value="提交" />
        <br />
        @msg
      </body>
    </form>
    </html>

    为什么用到hidden元素,就是为了表明是不是postback,只有带name属性的元素才能提交给服务端。当第一次加载时不会提交这些元素,因为是直接从HandlerHello1.ashx加载的,此时hidden的value是不存在的。当用户提交时会会传递这个值 ,这时服务端会知道是postback.
    2.建立服务端

    <%@ WebHandler Language="C#" Class="HandlerHello1" %>
    
    using System;
    using System.Web;
    
    public class HandlerHello1 : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/html";
            string postback = context.Request["ispostback"];
            string username=context.Request["UserName"];
            
            string msg="";
            if(postback=="true") 
            {
                context.Response.Write("提交进入");
                msg="欢迎:"+username;
            }else
            {
                context.Response.Write("直接进入");
                username = "";
                @msg="";
            }
            string s=context.Request["vvv"];
            if (!string.IsNullOrEmpty(s))
            {
                @msg=s;
            }
            //读取hello1.html
            string constr = System.IO.File.ReadAllText(context.Server.MapPath("Hello1.htm"));
            constr=constr.Replace("@value", username); //替换文本框中的内容
            constr = constr.Replace("@msg",msg); //替换@msg内容
            context.Response.Write(constr);
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

      替换过的内容好像是用户的网页没有动过一样。其实是服务端又提交了一份完整的copy.

  • 相关阅读:
    CQUOJ 10819 MUH and House of Cards
    CQUOJ 9920 Ladder
    CQUOJ 9906 Little Girl and Maximum XOR
    CQUOJ 10672 Kolya and Tandem Repeat
    CQUOJ 9711 Primes on Interval
    指针试水
    Another test
    Test
    二分图匹配的重要概念以及匈牙利算法
    二分图最大匹配
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3111840.html
Copyright © 2011-2022 走看看