后台獲取前台數據的方法-Form表單+ajax
Tips: 1、前台可以直接利用Html標簽的id 來獲取標簽的屬性值
2、css可以利用 id 和 class 名來改標簽的樣式
3、后台不能直接通過div的id和class來獲取前台的Html標簽的值,只能通過From表單來存需要的html(包括div標簽屬性、內容等)
4、通過ajax前后台數據交互,ajax通過data把前台頁面數據傳給后台,后台(一般處理程序.ashx)獲取前台data的數據,並return,成功后ajax執行success中的內容
var form = ("表單的name");
form.ajaxSubmit{..........}
5、后台(.ashx)獲取前台數據的時候只能通過name屬性來取數據
HttpContext.Current.Request.Form["寫想要的form中存的html中想要的文本域的 name的值 "] //獲取 name="值" 的文本域的value
HttpContext.Current.Request[" 前台ajax中data存的鍵名"] //獲取ajax的data中所存鍵名對應的鍵值
如:ajax {.....
data: { "ModuleType": "AddDFinance", "EnterpriseId": $("#hidEnterpriseid").val() },
.......}
var temp = HttpContext.Current.Request[" ModuleType"] //temp的值為AddDFinance
例子:此處通過一個隱藏的from來接收html ,再通過ajax把from.html()傳遞給后台
1、前台Html(寫在.aspx中)
<head>
<script src="../js/PageAjax.js" type="text/javascript"></script>
</head>
<body>
<div id="DFinance" style="display: none;" class="DFinance"> <div> <table id="TFinance"> <tr> <td class="rtdheader" style="border: 0px; border-bottom: 1px solid blue;"> <input type="text" id="YearToFinance" name="txtYearToFinance"/> </td> </tr> </table> </div> </div>
<a class='btn' id="confirm" onclick='confirmMessage(this)' style="margin-left: 30px"> 確定</a>
<--此處替換下面的from表單內容-->
</body>
from表單,用來接收上面的html
<form action="" id="frmForSubmitPart" enctype="multipart/form-data" method="post" style="display: none"></form>
2、PageAjax.js文件 (一點擊(onclick)"確定",就執行這個function)
function confirmMessage(obj) { var form = $("#frmForSubmitPart"); //前台可以通過id獲取form,后台只能通過name取from的值 var submitHtml = ""; form.html(""); submitHtml = $("#DFinance").formhtml(); form.append(submitHtml); if ($(obj).html() == "確定") { form.ajaxSubmit({ url: "Handel/SaveModuleToDatabase.ashx", global: false, dataType: "json", data: { "ModuleType": "AddDFinance", "EnterpriseId": $("#hidEnterpriseid").val() }, success: function (data) { var thisTxtYear = $("#DFinance").find("#txtYearToFinance").val();
alert("成功!"); }
}
3、后台處理程序(SaveModuleToDatabase.ashx)
var finance = HttpContext.Current.Request.Form["txtYearToFinance"]; //( 表單中存了div input table) 接收表單中存的name="txtYearToFinance"的控件的value
using System; using System.Web; using System.Collections.Generic; using System.Collections; using System.IO; using BLL; using Model; using System.Text.RegularExpressions; public class SaveModuleToDatabase : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; string moduleId = context.Request["ModuleType"].ToString();
switch (moduleId) { case "AddDFinance": HttpContext.Current.Response.Write(Save()); break;
}
}
private string Save() { FinanceHeaderBLL efhBll = new FinanceHeaderBLL(); FinanceHeaderModel efhmodel = new FinanceHeaderModel(); var enterpriseId = ""; if (!string.IsNullOrEmpty(HttpContext.Current.Request["EnterpriseId"])) { enterpriseId = HttpContext.Current.Request["EnterpriseId"]; }
var finance = HttpContext.Current.Request.Form["txtYearToFinance"];
efhmodel.EnterpriseID = enterpriseId;
efhmodel.finance= finance;
}
FinanceHeaderBLL efhBll = new FinanceHeaderBLL(); // 業務邏輯層
FinanceHeaderModel efhmodel = new FinanceHeaderModel();// 數據層,寫在Model類庫中