zoukankan      html  css  js  c++  java
  • WebForm路由踩坑 ajax请求多次

    WebForm路由踩坑

    再次接触Asp.Net WebForm已是4年后的今天,源起新入职的公司,一个老的项目。
    Web接触的少,那就多动手写写。
    WebForm1.aspx

    <body>
    <div>
        <input type="text" id="text" />
        <button type="button" id="clickBtn">ClickMe</button>
    </div>
    <div id="txt"></div>
    
    <script>
        $(document).ready(function () {
    
            $("#clickBtn").click(function () {
    
                var userName = $("#text").val();
    
                $.ajax(
                    {
                        type: "post",
                        url: "/Test/WebForm1.aspx",
                        dataType: "json",
                        data: { 'userName': userName }
                    }
                ).done(function (data) {
                    $("#txt").html(data);
                });
            });
    
        });
    </script>
    

    WebForm1.aspx.cs

     public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var list = new List<string>() { "Hello", "World" };
    
            var userName = HttpContext.Current.Request.Form["userName"];
    
            if (userName != null)
            {
                list.Add(userName);
    
                var data = JsonConvert.SerializeObject(list);
    
                HttpContext.Current.Response.ContentType = "json";
                HttpContext.Current.Response.Write(data);
                HttpContext.Current.Response.End();
            }
        }
    }
    

    运行,发现点击按钮后,并没有实现我们要的效果,并且发出了两次请求

    一次Post,一次Get,什么鬼?就这鸟问题,困扰了一上午,还是细细琢磨,不经意间试了一下这个

                $.ajax(
                    {
                        type: "post",
                        url: "/Test/WebForm1",
                        dataType: "json",
                        data: { 'userName': userName }
                    }
                ).done(function (data) {
                    $("#txt").html(data);
                });
    

    居然就可以了!

    那应该是asp.net WebForm觉得.aspx不友好,于是就去掉了,那么帮我们去掉这个过程就是一次重定向过程,怪不得会有一次Get请求。那该是路由设置的问题,于是细细一看。

    果然如此,红框中的是默认的配置,实用默认的配置就是永远都要重定向,就算你输入了WebForm1.aspx它都给你重定向成WebForm1。果断设置成Off,问题解决了。

  • 相关阅读:
    subString源码分析
    我的three.js学习记录(三)
    我的three.js学习记录(二)
    2017-10-15
    我的three.js学习记录(一)
    我的Spring学习记录(三)
    我的Spring学习记录(二)
    我的Hibernate学习记录(二)
    我的Hibernate学习记录(一)
    Tomcat学习笔记
  • 原文地址:https://www.cnblogs.com/HelloMyWorld/p/5774618.html
Copyright © 2011-2022 走看看