using System; using System.Web; using System.Data; using System.Text; using System.Collections; using Common; public class Do : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; //Post方式提交的数据表名 string tb = Fun.Form("tb"); //Post方式提交的Json数据 string rs = Fun.Form("rs"); if (rs == "[]") { context.Response.Write("[{\"do\":\"ok\"}]"); return; } DataTable table = Newtonsoft.Json.JsonConvert.DeserializeObject<DataTable>(rs); int rtn = 0; StringBuilder sb = new StringBuilder(); foreach (DataRow dr in table.Rows) { Hashtable ht = new Hashtable(); StringList sl = new StringList(); foreach (DataColumn dc in table.Columns) { sl.Add(dc.ColumnName); } DataTable dt = DBClass.GetDataTable(string.Format("Select {0} from {1} Where 1=2 ", sl.GetString(), tb)); foreach (DataColumn dc in table.Columns) { if (dt.Columns[dc.ColumnName].DataType == typeof(DateTime) && !Fun.IsDateTime(dr[dc.ColumnName].ToString())) ht[dc.ColumnName] = "1900-01-01"; else ht[dc.ColumnName] = dr[dc.ColumnName].ToString(); } string sql = "", sqla = "", sqlb = "@"; string[] arrFields = new string[ht.Count]; ht.Keys.CopyTo(arrFields, 0); sqla = String.Join(",", arrFields).Replace("\"", ""); sqlb += String.Join(",@", arrFields); sql = "insert into[" + tb + "](" + sqla + ") values(" + sqlb + ");"; foreach (string field in ht.Keys) { sql = sql.Replace("@" + field, "'" + ht[field].ToString() + "'"); } sb.Append(sql); } rtn = DBClass.ExeNonQuery(sb.ToString().Replace("''", "null")); if (rtn > 0) { context.Response.Write("[{\"do\":\"ok\"}]"); } else { context.Response.Write("[{\"do\":\"fail\"}]"); } } public bool IsReusable { get { return false; } } }
/* * jQuery ajaxPostJson plugin 0.3 * * Copyright (c) 2014 chinet_bridge * * 表单提交插件 0.3版 * */ ; (function($) { $.fn.ajaxPostJson = function(options) { var defaults = { title: null, //返回操作标题,调用插件时,不用metadata时为必填参数 selector: null, //每条数据记录所在选择器,选填参数 params: {}, //扩展参数,输入任意键值提供给服务端,选填参数 submiturl: null, //Ajax后台文件,比如Do.ashx ,调用插件时,必填参数 //记录行内字段选择器,选填参数 feildselector: "input[type=text],input[type=password],input[type=hidden],input:checked,textarea,select", //提交到后台的json数据包所在参数的名称 jsonpacketname: "rs" } var opts = $.extend(defaults, options); var o = {} var restr = []; //jqo 数据所在jq对象 function ajaxAdd(jqo) { var json = "["; var $rs; if (o.selector == null || o.selector == "") { $rs = jqo; } else { $rs = jqo.find(o.selector); } $rs.each(function() { var inputsel = $(this).find(o.feildselector); if (inputsel.length > 0) { json += "{"; inputsel.each(function() { if (typeof $(this).attr("name") == "undefined") { return true; } var key = $(this).attr("name"); key = (key.indexOf('$') != -1) ? key.split('$')[1] : key; key = key.replace(/\"/gm, ""); var value = $(this).val(); if (key != null && key != "" && key != "null") { json += "'" + key + "':'" + value + "',"; } }); json += "},"; } }); json += "]"; o.params[o.jsonpacketname] = json; //json数据包 $.ajax({ async: false, url: o.submiturl, type: "post", data: o.params, dataType: "json", success: function(msg) { var json = eval(msg); restr[restr.length] = json[0]; }, error: function(XMLHttpRequest, textStatus, errorThrown) { //alert(XMLHttpRequest.status); //alert(XMLHttpRequest.readyState); //alert(textStatus); alert('submiturl:' + o.submiturl + ' title:' + opts.title + "数据错误" + textStatus); }, complete: function(XMLHttpRequest, textStatus) { this; //调用本次AJAX请求时传递的o参数 } }); } this.each(function() { var $form = $(this); if ($.metadata) { o = opts.title == null ? $.extend({}, opts, $(this).metadata()) : $.extend({}, $(this).metadata(), opts); } else { o = opts; } ajaxAdd($form); restr[restr.length - 1]["title"] = o.title; }); return restr; }; })(jQuery); $(function() { $("#AddBtn").click(function() { //ID 数据表,对应某个Table,div,UL等的 //itemTag 数据每条记录对应的tr或li 等HTML标签,不填则函数认为整个ID为tableName的整个标签是一条数据记录 //数据字段名写在input输入框,隐藏域,单选框复选框文本域上面。 //其中多记录添加时radio的name要加数字前缀“1$”,"2$","3$"来区分不同记录。数字本身不代表记录序号,仅用于页面操作。 alert($("#AXBacterialTest").ajaxPostJson({ selector: 'tr'})[0].doit); //ID对应数据表 AXBacterialTest alert($("#AXDiagnos").ajaxPostJson()[0].doit); //ID对应数据表AXDiagnos }); });
<table width="100%" border="0" id="AXBacterialTest"> <tr> <td width="22%"> 培养日期 </td> <td width="26%"> 病原菌 </td> <td width="25%"> 抗菌药物 </td> <td width="27%"> 药物敏感性 </td> </tr> <tr> <td> <input type="text" value="" name="BTDate" /><span></span> </td> <td> <input type="text" value="" name="BTNosophyte" /><span></span> </td> <td> <input type="text" value="" name="BTB" /><span></span> </td> <td> <input value="S" type="radio" name="1$BTA" />S <input value="I" type="radio" name="1$BTA" />I <input value="R" type="radio" name="1$BTA" />R </td> </tr> <tr> <td> <input type="text" value="" name="BTDate" /><span></span> </td> <td> <input type="text" value="" name="BTNosophyte" /><span></span> </td> <td> <input type="text" value="" name="BTB" /><span></span> </td> <td> <input value="S" type="radio" name="2$BTA" />S <input value="I" type="radio" name="2$BTA" />I <input value="R" type="radio" name="2$BTA" />R </td> </tr> <tr> <td> <input type="text" value="" name="BTDate" /><span></span> </td> <td> <input type="text" value="" name="BTNosophyte" /><span></span> </td> <td> <input type="text" value="" name="BTB" /><span></span> </td> <td> <input value="S" type="radio" name="3$BTA" />S <input value="I" type="radio" name="3$BTA" />I <input value="R" type="radio" name="3$BTA" />R </td> </tr> </table> <table width="100%" border="0" id="AXDiagnos"> <tr> <td width="17%" style="text-align: right;"> 感染类型和特征: </td> <td> <input type="text" name="DType" value="" /><span></span> </td> </tr> <tr> <td width="17%" style="text-align: right;"> 严重程度: </td> <td> <input type="radio" name="DLevel" value="1" checked="checked" /> 轻度 <input type="radio" name="DLevel" value="2" /> 中度 <input type="radio" name="DLevel" value="3" /> 重度 </td> </tr> <tr> <td width="17%" style="text-align: right;"> 依 据: </td> <td width="83%"> <textarea name="DBasis" style="width: 500px; height: 130px; border: 1px solid #C2C2C2;"></textarea> <span></span> </td> </tr> </table> </table> <input type="button" value="提交" id="AddBtn" class="insert" />