• 用Ajax提交数据到ashx处理数据


    闲来无事,把最近使用Ajax无刷新开发的一些知识整理一下,一边回顾:
    项目一:修改密码
      HTML代码:
        <input id="txtOriginalPass" type="text" />
        <input id="txtNewPass" type="text" />
        <input id="txtConfirmPass" type="text" />
            <input id="btnSubmit" type="button" value="确认" onclick="ConfirmChange()" />
            <input id="btnCancel" type="button" value="取消" />
      js脚本:
        <script type="text/javascript">
              function ConfirmChange() {
                  $.ajax({
                        type: "POST",    //页面请求的类型,通常使用POST,那么处理页需要使用Request.Form["参数名称"]来获取页面传递的参数
                        url: "UpdatePasswordOfUser.ashx",   //处理页的相对地址
                        data: { OriginalPass: $('#txtOriginalPass').val(), NewPass: $('#txtNewPass').val(), RePass: $('#txtConfirmPass').val() },                    
                        success: function (msg) {    //这是处理后执行的函数,msg是处理页返回的数据
                           alert(msg);
                       }
                  });
                }
        </script>
      ashx处理页面的代码:
               public void ProcessRequest(HttpContext context)
               {
                   context.Response.ContentType = "text/plain";
                   string OriPass = context.Request.Form["OriginalPass"];   //原始密码(Get传参对应QueryString)
                   string txtNewPass = context.Request.Form["NewPass"];     //新密码
                   string txtConfirmPass = context.Request.Form["RePass"];  //确认密码
           /*-----这里可以写调用的函数------*/
                   context.Response.Write("密码修改成功");   //返回信息
               }


     项目二:两个DropDownList下拉列表无刷新的联动:
          对于第一个DropDownList显示的数据,实在页面加载的时候赋的数据源,当这个DropDownList选项发生变化时,把数据发送到处理页,
          然后处理页返回数据给第二个DropDownList
      HTML代码:
        <asp:DropDownList ID="ddlDeptNameOfSign" runat="server" Width="200px" onchange="GetChildDrop()"></asp:DropDownList>
        <asp:DropDownList ID="ddlUserOfSign" runat="server" Width="200px" onchange="GetChildItem()"></asp:DropDownList>
       js脚本:
        <script type="text/javascript">
               //页面加载时进行下拉列表的初始化
            $(document).ready(function () {   
                var childDrop = "<%=ddlUserOfSign.ClientID %>";  //人员
                $('#' + childDrop).append("<option value='0'>---请选择签约人员---</option>");  //此处的value为0,为了数据处理方便,建议不要省略
            })
            //页面加载的时候,绑定下拉列表:签约部门、签约人员
            function GetChildDrop() {
                var parentDrop = "<%=ddlDeptNameOfSign.ClientID %>";  //部门
                var childDrop = "<%=ddlUserOfSign.ClientID %>";  //人员
                $('#' + childDrop + ' option').remove();
                $.ajax({
                    type: "POST",
                    url: ".../Pages/DepartmentUserOfSign.ashx",
                    data: { "parentDrop": $('#' + parentDrop).val() },
                    success: function (data) {
                        if (data != "") {
                            var returnValue = data.split(",");
                            $('#' + childDrop).append("<option value='0'>---请选择签约人员---</option>");
                            $('#' + childDrop + ' option:first').attr('selected', 'true');
                            for (var i = 0; i < returnValue.length - 1; i++) {
                                if (i % 2 == 0) {
                                    $('#' + childDrop).append("<option value=" + returnValue[i] + ">" + returnValue[i + 1] + "</option>");
                                    $('#' + childDrop).val(returnValue[i+1]);
                                }
                            }
                        }
                        else {
                            alert("没有对应的签约人员.");
                        }
                    }
                });
            }
         //当子列表改变选项时,发送到处理页面,用于记忆选中的值,用这种方法有点猥琐,但是无刷新时加载的数据在.NET页面的后台是获取不到的
         function GetChildItem() {
                var childDrop1 = "<%=ddlUserOfSign.ClientID %>";  //人员
                $.ajax({
                    type: "POST",
                    url: ".../Pages/handleLoginNameOfContract.ashx",
                    data: { "childDrop": $('#' + childDrop1).val() },
                    success: function (data) {
                    }
                });
            }

        </script>
       ashx处理页面代码:
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                string departmentValue = context.Request.Form["parentDrop"];
                if (!string.IsNullOrEmpty(departmentValue))
                {
                    //不为空
                    string sql = "select UserID,LoginName from tb_User where OrganizationID=" + departmentValue + "";
                    string TheReturnValue = null;   //返回值
                    SqlConnection conn = null;
                    SqlCommand cmd = null;
                    SqlDataAdapter adapter = null;
                    using (conn = new SqlConnection("---------连接字符串--------"))
                    {
                        if (conn.State == ConnectionState.Closed)
                        {
                            conn.Open();
                        }
                        if (conn.State == ConnectionState.Broken)
                        {
                            conn.Close();
                            conn.Open();
                        }
                        try
                        {
                            cmd = new SqlCommand(sql, conn);
                            adapter = new SqlDataAdapter(cmd);
                            DataSet ds = new DataSet();
                            adapter.Fill(ds);
                            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                            {
                                TheReturnValue += ds.Tables[0].Rows[i][0].ToString() +","+ ds.Tables[0].Rows[i][1].ToString();
                                TheReturnValue += ",";
                            }
                            context.Response.Write(TheReturnValue);        
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                    }
                }
                else
                {
                    context.Response.Write("false");      
                }
            }

       另一个处理页:
          public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                string loginName = context.Request.Form["childDrop"];
                context.Session["contractLoginName"] = loginName;
            }


    第三个项目:
     两个DropDownList,一个TextBox,根据两个DropDownList选中的值,当在文本框中输入数据时,可以显示仿照百度式的搜索列表,当选中后文本库的值后,按一下Enter,
     本人技术有限,不能实现百度那样的选中值后自动查找
     DropDownList:区域
     DropDownList:街道
     TextBox:物业地址
         HTML代码:
        <div>
                    <asp:DropDownList ID="dropqy" runat="server" DataValueField="DistrictID" DataTextField="name" onchange="RegionChange()">
                    </asp:DropDownList>
                    <asp:DropDownList ID="ddlCommunity" runat="server" DataValueField="CommunityID" DataTextField="CommunityName" onchange="handleCommunity()">
                    </asp:DropDownList>
                    <asp:TextBox ID="txtdz" runat="server" key="地址"></asp:TextBox>
                    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="搜索" style="display:none"/>
            </div>
         js脚本:

        <link href="http://www.cnblogs.com/Styles/jquery.ui.autocomplete.css" rel="stylesheet" type="text/css" />
        <script src="http://www.cnblogs.com/Scripts/jquery-1.7.2.js" type="text/javascript"></script>
        <script src="http://www.cnblogs.com/Scripts/jquery-ui-1.8.22.custom.js" type="text/javascript"></script>
         $(function () {
                var d = "<%=txtdz.ClientID %>";
                var RegionName = "<%=dropqy.ClientID %>";
                var CommunityName = "<%=ddlCommunity.ClientID %>";
                $("#" + d).autocomplete({
                    source: function (request, response) {
                        $.ajax({
                            url: "http://www.cnblogs.com/Pages/SearchHouseInfoForAcceptPage.ashx?keyword=" + encodeURIComponent(request.term) + "&&parentDrop=" + encodeURIComponent($('#' + RegionName).val()) + "&&childDrop=" + encodeURIComponent($('#' + CommunityName).val()) + "",
                            data: {
                                name: request.term
                            },
                            dataType: "json",
                            success: function (data) {
                                response($.map(data, function (item) {
                                    return { value: item };
                                }));
                            }
                        });
                    }
                });
            });
       function document.onkeydown() {
              var btn = "<%=Button1.ClientID %>";
              var button = document.getElementById(btn);
              if (event.keyCode == 13) {
                  button.click();
                  event.returnValue = false;
              }
          }
        后台代码:
     在Page_Load中
         //定义文本框的事件,当触发文本框的事件时,触发按钮的事件
                this.txtdz.Attributes["onkeypress"] = "if(event.keyCode==13){" + this.Button1.ClientID + ".click();return false;}";
     使用委托:
      //获取选中的物业地址,传给父页面
      public class UserControlEventTest : EventArgs
      {
          public string _address;
          public UserControlEventTest(string address)
          {
       this._address = address;
          }
      }
      public delegate void SubmitUserHandler(object sender, UserControlEventTest e);
      public event SubmitUserHandler SubmitUserEvent;
      protected void Button1_Click(object sender, EventArgs e)
      {
          UserControlEventTest userControlEventTest = new UserControlEventTest(txtdz.Text);
          SubmitUserEvent(this, userControlEventTest);
      }

     ashx处理页面代码:
                string keyword = context.Request.QueryString["keyword"];
                keyword = System.Web.HttpUtility.UrlDecode(keyword);
                regionID = context.Request.QueryString["parentDrop"];
                communityID = context.Request.QueryString["childDrop"];

  • 相关阅读:
    NB-IOT终端应用场景
    开关量是什么信号,模拟量是什么信号
    模拟量设备为什么都用4~20mA传输信号
    物联网三大关键技术
    4~20mA.DC(1~5 V.DC)信号制的优点
    Lora在局域网中的优势
    NB-IoT终端在不同工作状态下的分析
    4G模块的串行AT命令发送未接收返回如何处理
    前端性能优化
    Tab:不可思议的CSS光标下划线跟随效果
  • 原文地址:https://www.cnblogs.com/jsping/p/2617179.html
Copyright © 2020-2023  润新知