当前位置:编程学习 > C#/ASP.NET >>

《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

此帖子内容是我做项目时用到,自己琢磨出来的,可能还有很多纰漏之处,在此分享!互相交流,互相学习,有不对的地方,欢迎大家指正!
具体内容见博客《 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中》:http://blog.csdn.net/mazhaojuan/article/details/8592015

 先看一下我要实现的功能界面:  

    这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好。这个页面主要实现的是授课,即给老师教授的课程分配学生。此页面实现功能的步骤已在页面中有所体现,这里不再赘述,此篇文章主要介绍:我是如何通过js从前台获取数据,然后通过ajax技术向后台一般处理程序传递JSON,后台又是如何获取传来的JSON,并对JSON数据转换,然后将转换后的数据写入数据库的!

    介绍这些步骤实现前,先说说自己的辛酸:絮叨辛酸,是因为为了实现这个功能,我真的用了很长时间!为了让用户看着舒服点,这个页面的实现我写了700多行的JS代码和9个一般处理程序!为了避免页面刷新影响效果,又不想使用VS自带的UpdatePanel AJAX控件,感觉这个控件会带来不少后患,所以这个页面的实现我使用了大量JS代码。从后台一般处理程序向前台传递JSON,前台解析JSON并显示在界面,这样的实现网上例子很多,非常容易实现,我也写了一篇博客来记录自己的成长,见《《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中》;而从前台向后台传递JSON用法,却让我费尽周折,最终也没找到一个完整的实例,但最后将问题分成几个步骤,然后一步步解决了!
    
   下面分享下我的经验,希望对用到此功能的战友有所帮助,当然我这样实现有什么缺陷,还希望得到高人指点!

1.界面层添加信息列表部分html代码
[html] view plaincopyprint?
<!--添加各项列表-->  
               <td class="addlist">  
                   <div class="block">  
                       <div class="h">  
                           <span class="icon-sprite icon-list"></span>  
                           <h3>  
                               添加信息列表</h3>  
                       </div>  
                       <div class="tl corner">  
                       </div>  
                       <div class="tr corner">  
                       </div>  
                       <div class="bl corner">  
                       </div>  
                       <div class="br corner">  
                       </div>  
                       <div class="cnt-wp">  
                           <div class="cnt" style="width: 450px; height: 400px; overflow: scroll;">  
                               <table class="data-form" id="tabAddList" border="0" cellspacing="0" width="450px"  
                                   align="center" cellpadding="0">  
                                      <tbody>  
                            
                           <tr>  
                               <th scope="row">  
                                   教师名:  
                               </th>  
                               <td>  
                                   <asp:TextBox CssClass="input-normal" ID="txtAddTeacherName" runat="server"   
                                       Enabled="False"></asp:TextBox>  
                                   <%--隐藏控件,保存教师id--%>  
                                   <asp:HiddenField ID="hidFieldSaveTeacherID" runat="server" />  
                               </td>  
                           </tr>  
                            <tr>  
                               <th scope="row">  
                                   课程名:  
                               </th>  
                               <td>  
                                   <asp:TextBox CssClass="input-normal" ID="txtAddCourseName" runat="server"   
                                       Enabled="False"></asp:TextBox>  
                                   <%--隐藏控件,保存课程id--%>  
                                   <asp:HiddenField ID="hidFieldSaveCourseID" runat="server" />  
                                   <%--隐藏控件,保存教师、课程关系indexing--%>  
                                   <asp:HiddenField ID="hidFieldSaveIndexing" runat="server" />  
                               </td>  
                           </tr>  
                           <tr>  
                               <th scope="row">  
                                   选择上课班:  
                               </th>  
                               <td>  
                                   <asp:DropDownList ID="ddlTeachClass" CssClass="input-normal" runat="server">  
                                   </asp:DropDownList>  
                               </td>  
                                <td>  
                                  <%-- <asp:Button ID="btnAddTeachClass" runat="server" Text="添加一个上课班" OnClick="btnAddTeachClass_Click" />--%>  
                                      
                                     <input id="btnAddTeachClass" type="button" class="btn-lit" value="确认添加" onclick="AddTeachClass()" />  
                               </td>  
                           </tr>  
                           <tr>  
                               <th scope="row">  
                                   已选授课人数  
                               </th>  
                               <td>  
                                   <asp:TextBox CssClass="input-normal" ID="txtStuNum" runat="server"   
                                       Enabled="False"></asp:TextBox>  
                               </td>  
                           </tr>  
                           <tr>  
                               <th scope="row">  
                                   学生姓名列表  
                               </th>  
                               <td>  
                                   <asp:ListBox ID="lsboxStudent" runat="server" Height="150px" Width="250px"></asp:ListBox>  
                               </td>  
                           </tr>  
                            
                           <tr>  
                               <th scope="row">  
                                    <br />  
                               </th>  
                               <td>  
                                   <br />  
                                    <%--<asp:Button ID="btnAddTeachCourse" class="btn-lit" runat="server" Text="确认添加"   
                                       onclick="btnAddTeachCourse_Click" />--%>  
                                   <input id="btnAddTeachCourse" type="button" class="btn-lit" value="确认添加" onclick="AddTeachCourse()" />  
                               </td>  
                           </tr>  
                       </tbody>  
                               </table>  
                                
                           </div>  
                       </div>  
                   </div>  
               </td>  

选择完学年学期、教师、课程、学生后,点击"确认添加"按钮,执行"添加授课信息"事件!
         
2.通过JS获取前台授课数据,并向后台一般处理程序传递
[javascript] view plaincopyprint?
//*******************************************授课点击事件******************************************//  
//添加授课信息  
function AddTeachCourse() {  
     
    //取得教师ID  
    var strTeacherID = $("#hidFieldSaveTeacherID").val();  
    //alert("教师ID="+txtTeacherID);  
  
  
    //取得课程ID  
    var strCourseID = $("#hidFieldSaveCourseID").val();  
    //alert("课程ID="+txtCourseID);  
    //取得上课班ID  
    var strTeachClassID = document.getElementById("ddlTeachClass");  
    var TeachClassID = strTeachClassID.options[strTeachClassID.selectedIndex].value; //得到ID  
    //取得课程分配的ID(Indexing)  
    var Indexing = $("#hidFieldSaveIndexing").val();  
    //取得学生数量  
    var stuNum = $("#txtStuNum").val();  
  
  
    //取得listbox框ID  
    var listStudent = document.getElementById("lsboxStudent");  
    //取得listbox框中元素长度  
    var lstStuLength = listStudent.options.length;  
    //    var objJsons="";  
    //    var StuArrayObj = new Array(); //创建一个数组,存储学生ID  
    // StuArrayObj[i] = StudentID; //向数组中添加学生ID  
  
    //*******************以下是:转换json对象的过程*************************//  
    var StuArrayObjs = [];  //定义一个空串  
    for (var i = 0; i < lstStuLength; i++) {  
  
        var StudentID = listStudent.options[i].value; //取得学生ID  
  
        var StuArrayObj = {};       //定义一个空对象,存入数据依次写入空串  
        StuArrayObj["TeacherID"] = strTeacherID;             //教师ID  
        StuArrayObj["CourseID"] = strCourseID;     //课程ID  
        StuArrayObj["TeachClassID"] = TeachClassID;      //上课班ID  
        StuArrayObj["Indexing"] = Indexing;              //课程分配ID  
        StuArrayObj["StuNum"] = stuNum;       //学生数量  
        StuArrayObj["StudentID"] = StudentID;         //学生ID  
  
        StuArrayObjs.push(StuArrayObj);  
  
    }  
    var TeachCourseJsonString = JSON.stringify(StuArrayObjs);  // JSON.stringify() 转换为json串  
    //    var TeachCourseJson = eval("(" + TeachCourseJsonString + ")");  //转换为json对象  
    //    alert(TeachCourseJson[1].TeacherID);  
    //下面$.getJSON 可以传递成功,只是这样传递不能传递过长字符串  
    ////    $.getJSON("../handler/AddTeachCourse.ashx", { TeachCourseJson: TeachCourseJsonString }, function (data) {  
    ////        alert(data);  
    ////    });  
    //与AJAX交互,向一般处理程序传递json字符串数组,并返回结果  
    $.post("../handler/AddTeachCourse.ashx", { TeachCourseJson: TeachCourseJsonString }, function (data) {  
        alert(data);  
    });  
  
    }  

以上有几个需要注意的地方:
   2.1.转换JSON串使用
[javascript] view plaincopyprint?
JSON.stringify()  
   2.2.JS向一般处理程序传递JSON使用
[javascript] view plaincopyprint?
//与AJAX交互,向一般处理程序传递json字符串数组,并返回结果  
   $.post("要使用的一般处理程序路径", { TeachCourseJson: TeachCourseJsonString }, function (data) {  
       alert(data);  
   });  

js向后台传递json 一般处理程序解析json --------------------编程问答-------------------- 3.一般处理程序解析JS传递过来的Json数据,并进行解析,写入DataTable中,然后写入数据库
   
[csharp] view plaincopyprint?
<%@ WebHandler Language="C#" Class="AddTeachCourse" %>  
/******************************************************************************* 
 *文    件:AddTeachCourse.ashx 
 *作    者:mzj 
 *所属小组:评教小组 
 *文件说明:添加授课信息 
 *创建日期:2013年2月6日17:57:01 
 *修改作者: 
 *修改日期: 
 *修改描述: 
 *版 本 号:V1.0 
 *版本号变更记录:      
********************************************************************************/  
using System;  
using System.Web;  
using System.Collections.Generic;  
using System.Linq;  
using System.Data;  
  
//json使用命名空间  
using Newtonsoft.Json;  
using Newtonsoft.Json.Linq;  
  
using Newtonsoft.Json.Converters;  
  
using System.IO;  
using System.Text;  
  
using TeachSystem.BLL.TeachingBLL;  
using TeachSystem.Entity.TeachingEntity;  
  
  
public class AddTeachCourse : IHttpHandler  
{  
  
    public void ProcessRequest(HttpContext context)  
    {  
        context.Response.ContentType = "text/plain";  
   
          
        //创建一个名为ds_StuTeacherCourse的DataSet  
        //(用于存放表:学生、教师、课程关系表,学生、上课班关系表,课程分配上课班关系表)  
        DataSet dsStuTeacherCourse = new DataSet("ds_StuTeacherCourse");  
        //手动创建的新数据表-学生、教师、课程关系数据表  
        DataTable dtAddStudentTeaherCourse = new DataTable("dt_AddStudentTeaherCourse"); //创建一个名为dt_AddStudentTeaherCourse的DataTalbe  
        //为dt_AddStudentTeaherCourse表内建立Column(表头),添加数据列:StudentID,Indexing,IsAvailable  
        dtAddStudentTeaherCourse.Columns.Add(new DataColumn("StudentID", typeof(string)));  
        dtAddStudentTeaherCourse.Columns.Add(new DataColumn("Indexing", typeof(int)));  
        dtAddStudentTeaherCourse.Columns.Add(new DataColumn("IsAvailable", typeof(string)));  
  
        //手动创建的新数据表-学生、上课班关系数据表  
        DataTable dtAddStudentTeachClass = new DataTable("dt_AddStudentTeachClass"); //创建一个名为dt_AddStudentTeachClass的DataTalbe  
        //为dt_AddStudentTeachClass表内建立Column(表头),添加数据列:StudentID,TeachClassID,IsAvailable  
        dtAddStudentTeachClass.Columns.Add(new DataColumn("StudentID", typeof(string)));  
        dtAddStudentTeachClass.Columns.Add(new DataColumn("TeachClassID", typeof(string)));  
        dtAddStudentTeachClass.Columns.Add(new DataColumn("IsAvailable", typeof(string)));  
  
        //手动创建的新数据表-课程分配、上课班关系数据表  
        DataTable dtAddCourseTeachClass = new DataTable("dt_AddCourseTeachClass"); //创建一个名为dt_AddStudentTeachClass的DataTalbe  
        //为dt_AddCourseTeachClass表内建立Column(表头),添加数据列:TeachClassID,Indexing,IsAvailable  
        dtAddCourseTeachClass.Columns.Add(new DataColumn("TeachClassID", typeof(string)));  
        dtAddCourseTeachClass.Columns.Add(new DataColumn("Indexing", typeof(int)));  
        dtAddCourseTeachClass.Columns.Add(new DataColumn("IsAvailable", typeof(string)));  
        dtAddCourseTeachClass.Columns.Add(new DataColumn("OddEven", typeof(string)));  
        dtAddCourseTeachClass.Columns.Add(new DataColumn("StuNum",typeof(int)));  
          
        //获取前台传递过来的授课JSON字符串数组  
        string ss = context.Request.Form["TeachCourseJson"];  
        //反序列化获取的JSON字符串数组  
        JArray javascript = (JArray)JsonConvert.DeserializeObject(ss);  
        //依次遍历反序列化的json字符串数组  
        for (int i = 0; i < javascript.Count; i++)  
        {  
            //将一个个反序列化的JSON字符串数组转换成对象,并将转换后的对象的值依次赋给各变量  
            JObject obj = (JObject)javascript[i];  
            string strTeacherID = obj["TeacherID"].ToString();                 //教师ID  
            string strCourseID = obj["CourseID"].ToString();                   //课程ID  
            string strTeachClassID = obj["TeachClassID"].ToString();           //上课班ID  
            int intIndexing = Convert.ToInt32(obj["Indexing"].ToString());     //课程分配ID  
            int intStuNum = Convert.ToInt32(obj["StuNum"].ToString());         //授课学生人数  
            string strStudentID = obj["StudentID"].ToString();                 //学生ID  
  
            //添加学生、教师、课程关系信息表的新行  
            DataRow drAddStudentTeaherCourse = dtAddStudentTeaherCourse.NewRow();//注意这边创建dt的新行的方法。指定类型是DataRow而不是TableRow,然后不用new直接的用创建的DataTable下面的NewRow方法。  
            //学生、教师、课程关系信息表对应的各列值  
            drAddStudentTeaherCourse["StudentID"] = strStudentID;         //学生ID  
            drAddStudentTeaherCourse["Indexing"] = intIndexing;           //课程分配ID  
            drAddStudentTeaherCourse["IsAvailable"] = "是";  
            dtAddStudentTeaherCourse.Rows.Add(drAddStudentTeaherCourse);  //将一整条数据写入表中  
  
            //添加学生、上课班关系信息表的新行  
            DataRow drAddStudentTeachClass = dtAddStudentTeachClass.NewRow();//注意这边创建dt的新行的方法。指定类型是DataRow而不是TableRow,然后不用new直接的用创建的DataTable下面的NewRow方法。  
            //学生、上课班关系信息表对应的各列值  
            drAddStudentTeachClass["StudentID"] = strStudentID;             //学生ID  
            drAddStudentTeachClass["TeachClassID"] = strTeachClassID;       //上课班ID  
            drAddStudentTeachClass["IsAvailable"] = "是";  
            dtAddStudentTeachClass.Rows.Add(drAddStudentTeachClass);  //将一整条数据写入表中  
  
        }  
         
          
            JObject objs = (JObject)javascript[0];  
            
            string strTeachClassIDs = objs["TeachClassID"].ToString();  
            int intIndexings = Convert.ToInt32(objs["Indexing"].ToString());  
            int intStuNums = Convert.ToInt32(objs["StuNum"].ToString());  
              
             
           //添加课程分配、上课班关系信息表的新行  
            DataRow drAddCourseTeachClass = dtAddCourseTeachClass.NewRow();//注意这边创建dt的新行的方法。指定类型是DataRow而不是TableRow,然后不用new直接的用创建的DataTable下面的NewRow方法。  
            //课程分配、上课班关系信息表对应的各列值  
            drAddCourseTeachClass["TeachClassID"] = strTeachClassIDs;  
            drAddCourseTeachClass["Indexing"] = intIndexings;  
            drAddCourseTeachClass["IsAvailable"] = "是";  
            drAddCourseTeachClass["OddEven"] = null;  
            drAddCourseTeachClass["StuNum"] = intStuNums;  
            dtAddCourseTeachClass.Rows.Add(drAddCourseTeachClass);  //将一整条数据写入表中  
              
  
        //将各表加入DataSet中:  
        dsStuTeacherCourse.Tables.Add(dtAddStudentTeaherCourse);  
        dsStuTeacherCourse.Tables.Add(dtAddStudentTeachClass);  
        dsStuTeacherCourse.Tables.Add(dtAddCourseTeachClass);  
  
        //将DataSet中数据表导入数据库  
        Boolean flagImportStuTeacherCourse = new TeachCourseBLL().ImportStudentTeacherCourse(dsStuTeacherCourse);         
        //JsonReader reader = new JsonReader(new StringReader(jsonText))  
          
        //string s = context.Request.Form["TeachCourseJson"];  
        context.Response.Write(flagImportStuTeacherCourse);  
        context.Response.End();  
          
         
       
    }  
      
  
    public bool IsReusable  
    {  
        get  
        {  
            return false;  
        }  
    }  
  
}  
一般处理程序代码,需要注意几点:
   3.1 获取前台传递过来的JSON字符串数组
[csharp] view plaincopyprint?
//获取前台传递过来的授课JSON字符串数组  
       string ss = context.Request.Form["TeachCourseJson"];  
   3.2 反序列化前台传来的JSON字符才能换数组
[csharp] view plaincopyprint?
//反序列化获取的JSON字符串数组  
      JArray javascript = (JArray)JsonConvert.DeserializeObject(ss);  
    3.3自定义Dataset,并建立各数据表,将前台传来的数据写入DataTable表
创建Dataset及数据表
[csharp] view plaincopyprint?
//创建一个名为ds_StuTeacherCourse的DataSet  
      //(用于存放表:学生、教师、课程关系表,学生、上课班关系表,课程分配上课班关系表)  
      DataSet dsStuTeacherCourse = new DataSet("ds_StuTeacherCourse");  
      //手动创建的新数据表-学生、教师、课程关系数据表  
      DataTable dtAddStudentTeaherCourse = new DataTable("dt_AddStudentTeaherCourse"); //创建一个名为dt_AddStudentTeaherCourse的DataTalbe  
      //为dt_AddStudentTeaherCourse表内建立Column(表头),添加数据列:StudentID,Indexing,IsAvailable  
      dtAddStudentTeaherCourse.Columns.Add(new DataColumn("StudentID", typeof(string)));  
      dtAddStudentTeaherCourse.Columns.Add(new DataColumn("Indexing", typeof(int)));  
      dtAddStudentTeaherCourse.Columns.Add(new DataColumn("IsAvailable", typeof(string)));  
  
      //手动创建的新数据表-学生、上课班关系数据表  
      DataTable dtAddStudentTeachClass = new DataTable("dt_AddStudentTeachClass"); //创建一个名为dt_AddStudentTeachClass的DataTalbe  
      //为dt_AddStudentTeachClass表内建立Column(表头),添加数据列:StudentID,TeachClassID,IsAvailable  
      dtAddStudentTeachClass.Columns.Add(new DataColumn("StudentID", typeof(string)));  
      dtAddStudentTeachClass.Columns.Add(new DataColumn("TeachClassID", typeof(string)));  
      dtAddStudentTeachClass.Columns.Add(new DataColumn("IsAvailable", typeof(string)));  
  
      //手动创建的新数据表-课程分配、上课班关系数据表  
      DataTable dtAddCourseTeachClass = new DataTable("dt_AddCourseTeachClass"); //创建一个名为dt_AddStudentTeachClass的DataTalbe  
      //为dt_AddCourseTeachClass表内建立Column(表头),添加数据列:TeachClassID,Indexing,IsAvailable  
      dtAddCourseTeachClass.Columns.Add(new DataColumn("TeachClassID", typeof(string)));  
      dtAddCourseTeachClass.Columns.Add(new DataColumn("Indexing", typeof(int)));  
      dtAddCourseTeachClass.Columns.Add(new DataColumn("IsAvailable", typeof(string)));  
      dtAddCourseTeachClass.Columns.Add(new DataColumn("OddEven", typeof(string)));  
      dtAddCourseTeachClass.Columns.Add(new DataColumn("StuNum",typeof(int)));  
向数据表填充数据,例如
[csharp] view plaincopyprint?
//添加课程分配、上课班关系信息表的新行  
          DataRow drAddCourseTeachClass = dtAddCourseTeachClass.NewRow();//注意这边创建dt的新行的方法。指定类型是DataRow而不是TableRow,然后不用new直接的用创建的DataTable下面的NewRow方法。  
          //课程分配、上课班关系信息表对应的各列值  
          drAddCourseTeachClass["TeachClassID"] = strTeachClassIDs;  
          drAddCourseTeachClass["Indexing"] = intIndexings;  
          drAddCourseTeachClass["IsAvailable"] = "是";  
          drAddCourseTeachClass["OddEven"] = null;  
          drAddCourseTeachClass["StuNum"] = intStuNums;  
          dtAddCourseTeachClass.Rows.Add(drAddCourseTeachClass);  //将一整条数据写入表中  
将各数据表存入DataSet
[csharp] view plaincopyprint?
//将各表加入DataSet中:  
       dsStuTeacherCourse.Tables.Add(dtAddStudentTeaherCourse);  
       dsStuTeacherCourse.Tables.Add(dtAddStudentTeachClass);  
       dsStuTeacherCourse.Tables.Add(dtAddCourseTeachClass);  
   --------------------编程问答--------------------   3.4将DataSet中各数据表写入数据库
[csharp] view plaincopyprint?
//将DataSet中数据表导入数据库  
       Boolean flagImportStuTeacherCourse = new TeachCourseBLL().ImportStudentTeacherCourse(dsStuTeacherCourse);   
    
    这篇文章仅仅介绍了添加授课功能的实现 --------------------编程问答-------------------- 这个你自己知道就好了,别发出来,发出来就误导人了。
博客园和51aspx,可以说现在比csdn都水,水的原因就是,很多人把太多太多没什么特别有参考价值的到处推广,搞得原本很基础的玩意被那些不明所以然的学生当非常高深,非常高级的内容去学了 --------------------编程问答--------------------
引用 3 楼 wanghui0380 的回复:
这个你自己知道就好了,别发出来,发出来就误导人了。
博客园和51aspx,可以说现在比csdn都水,水的原因就是,很多人把太多太多没什么特别有参考价值的到处推广,搞得原本很基础的玩意被那些不明所以然的学生当非常高深,非常高级的内容去学了
不发出来,怎么知道自己做的对与不对? 知识只有共享了才会变成双份! 我写的这博客哪里水了?????这博客哪里写错了,你可以指点一二啊,如果你指出我的错误之处,我很乐意改正;如果我没有错,那么你这不是阻挡我知识共享么?????
不把自己的观点说出来,谁会知道你多大水平????? --------------------编程问答-------------------- 不是对或不对,也不是错和不错

而是这种代码,木有什么参考价值。你喜欢什么样书,21天??截几张vs安装图,下一步,下一步,完成.
然后using xxx,using yyy,int i=1+2,writeline ???

请告诉你写的这些玩意,对谁有参考价值 --------------------编程问答-------------------- 不反对分享,但分享要有意义,由于网络爬虫和采集器和搜索引擎的影响,一遍文章至少会在网络上流传3年,假设你的文章在3年以后还能对人有意义,那就是好文章。但是就你自己这文章,就你自己的3个月后来看,也会觉着木啥意义,这种对于玩意还要持续影响后面3年的人,这就不好了

俺们搞技术的一般不用百度搜索,为啥子呢?因为你用百度搜,能搜到最大可能就是博客园上那些作者写玩后3个月,连作者自己也觉着木啥意思,却在网络上流传了n年,还在百度首页摆着。

还是少点这样的分享,让真正有意义的文章能上百度把,免得俺们每次找点东西还得爬墙出去google --------------------编程问答--------------------
引用 5 楼 wanghui0380 的回复:
不是对或不对,也不是错和不错

而是这种代码,木有什么参考价值。你喜欢什么样书,21天??截几张vs安装图,下一步,下一步,完成.
然后using xxx,using yyy,int i=1+2,writeline ???

请告诉你写的这些玩意,对谁有参考价值
   
对于有这方面需求的人来说,看了这博客自己有参考价值;对于暂时用不到此技术的人来说,可以做到“不怕不知道,就怕不知道”,做出什么效果也不是看一篇博客就能完成的,不用参考这文章做出什么自己需要的效果,就是通过读别人的东西让自己产生灵感!  我写的代码还没有你说的这么不专业吧!
再说哪一个高手不是从基础做起的,谁可以一口吃成胖子?? 学习一样,先站在别人的肩膀上,然后才能自己创新……谁没听过json是什么,上来就会借助json传数据??????
从小没学过循序渐进是什么意思么?  --------------------编程问答-------------------- 打个比方把,这个csdn net版有个大大叫sp1234,在4年以前发过
重量级地查询控件 http://bbs.csdn.net/topics/310047728
这篇东西即使已经过了4年了,现在看仍然不过时,仍然有参考意义,这就是好的分享 --------------------编程问答--------------------
引用 8 楼 wanghui0380 的回复:
打个比方把,这个csdn net版有个大大叫sp1234,在4年以前发过
重量级地查询控件 http://bbs.csdn.net/topics/310047728
这篇东西即使已经过了4年了,现在看仍然不过时,仍然有参考意义,这就是好的分享


仁者见仁智者见智,你有你的观点,我有我的主见! 好分享与坏分享不是一个人可以决定的,乐意分享就分享,分享后得到更大的提高;而通过自己的努力实现的功能呢,拿出来分享,可能你认为它没有价值,因为你没用到它,但不代表别人认为它没有价值……每个人都有自由权,别人无法剥夺……成长是一个过程,不要希冀一天就达到100岁,那样的人生毫无意义…… --------------------编程问答-------------------- 然后呢。。。 --------------------编程问答-------------------- 还是支持一下,我最近也在处理js传递一个json字符串到handler,然后c#解析 --------------------编程问答--------------------
引用 11 楼 Joyhen 的回复:
还是支持一下,我最近也在处理js传递一个json字符串到handler,然后c#解析
 
Thanks,用过之后,发现它还是很简单的…… --------------------编程问答--------------------
引用 10 楼 Mockqi 的回复:
然后呢。。。

什么然后?? --------------------编程问答-------------------- 太繁琐太低级。如果我想学c#,我看到这种教程,我就会放弃c#。

要尽可能少写代码,最好不写代码,那才是编程之道。 --------------------编程问答--------------------
引用 14 楼 sp1234 的回复:
太繁琐太低级。如果我想学c#,我看到这种教程,我就会放弃c#。

要尽可能少写代码,最好不写代码,那才是编程之道。

我这不是教程啊…… 我当然没您这位大师的水平,当然我在向您发展……一步步来,别着急嘛…… --------------------编程问答--------------------
引用 15 楼 mazhaojuan 的回复:
引用 14 楼 sp1234 的回复:太繁琐太低级。如果我想学c#,我看到这种教程,我就会放弃c#。

要尽可能少写代码,最好不写代码,那才是编程之道。
我这不是教程啊…… 我当然没您这位大师的水平,当然我在向您发展……一步步来,别着急嘛……


计算机语言与其它语言是类似的。

你学外语的时候, 是按音标练口语还是跟着大师级的人物来练口语?

请思考3分钟……………………………………







并不是要你无节制地服从权威, 但在你的初级阶段, 还是先熟悉权威、高手的精髓和通常做法了,再自己去创新吧。 --------------------编程问答--------------------
引用 16 楼 yenange 的回复:
引用 15 楼 mazhaojuan 的回复:引用 14 楼 sp1234 的回复:太繁琐太低级。如果我想学c#,我看到这种教程,我就会放弃c#。

要尽可能少写代码,最好不写代码,那才是编程之道。
我这不是教程啊…… 我当然没您这位大师的水平,当然我在向您发展……一步步来,别着急嘛……

计算机语言与其它语言是类似的。

你学外语的时候, 是按音标练口语还……

我学习英语的方法服从学母语的方法,我非常同意“站在巨人肩膀上”,然后在自己创新
自己创新出来了,就藏起来么???
谁规定了,什么内容不能共享?
我没让你们同意我的观点,也没让你们按照我的方法做,这是我自己方式…… --------------------编程问答--------------------
引用 17 楼 mazhaojuan 的回复:
引用 16 楼 yenange 的回复:引用 15 楼 mazhaojuan 的回复:引用 14 楼 sp1234 的回复:太繁琐太低级。如果我想学c#,我看到这种教程,我就会放弃c#。

要尽可能少写代码,最好不写代码,那才是编程之道。
我这不是教程啊…… 我当然没您这位大师的水平,当然我在向您发展……一步步来,别着急嘛……

计算机语言与其它语言是类似的。
……



--------------------编程问答-------------------- 楼主是个妹子.大家别打击她! --------------------编程问答-------------------- 我觉得不错啊,如果我在编程方面实现了一个我自己认为还可以的功能,我也会很兴奋,他这种态度是好的,虽然是很小的东西但知道分享,技术就是从交流和分享得来的嘛。只不过可能LZ暂时还没有达到各位大大的那种认知的层次。我觉得这种态度很好,应该鼓励。 --------------------编程问答-------------------- 支持,个人觉得大神们对这样的文章可以带着修改的引导指正的态度去看,不要一味的批判。 --------------------编程问答-------------------- LZ  你代码贴太多了,反而思路讲少了,这样的 我们很不愿意看的 --------------------编程问答--------------------
引用 19 楼 liqiang665 的回复:
楼主是个妹子.大家别打击她!

经得起打击,没有别人的打击,怎么能变得更强呢…… --------------------编程问答--------------------
引用 22 楼 yyl8781697 的回复:
LZ  你代码贴太多了,反而思路讲少了,这样的 我们很不愿意看的
 
还是看我博客吧…… --------------------编程问答--------------------
引用 21 楼 aley 的回复:
支持,个人觉得大神们对这样的文章可以带着修改的引导指正的态度去看,不要一味的批判。

我觉得也应该这样的,哈哈…… 我知道这个帖子我发的不好,本来博客中的图片都舍了,还把代码稀里糊涂都贴了上来…… --------------------编程问答-------------------- 自己感觉刚开始可以做很多的尝试,不怕错,但要及时改。 --------------------编程问答--------------------
引用 20 楼 xiangaylian 的回复:
我觉得不错啊,如果我在编程方面实现了一个我自己认为还可以的功能,我也会很兴奋,他这种态度是好的,虽然是很小的东西但知道分享,技术就是从交流和分享得来的嘛。只不过可能LZ暂时还没有达到各位大大的那种认知的层次。我觉得这种态度很好,应该鼓励。


嗯哪,我会继续努力啊,争取早日跟上大神的层次,哈哈…… --------------------编程问答--------------------
引用 26 楼 ly_sl 的回复:
自己感觉刚开始可以做很多的尝试,不怕错,但要及时改。

接受指正…… --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 哇   感觉好复杂的说 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 1,提交表达数据  $.post('XXX',function(msg){
         返回
})

2,在ashx或者.aspx页面接收数据,解析  

3,存储到数据库

完了。。。。 --------------------编程问答-------------------- 鱼和渔是不一样的,况且你的这条鱼还是只能看不能直接吃 --------------------编程问答-------------------- --------------------编程问答-------------------- 有些人自以为很流弊,你会什么,你有什么资格指责别人,你凭什么说别人这不好那不好,别人分享一下他的经验怎么呢,哎你眼了,CSDN迟早被你们这样的人搞垮,艹。。。世界有了你们这群人就是可悲。艹,上面有个楼主劳资永远都记着,艹,劳资提问好几次,他也是像这样指责,自以为很流弊。 --------------------编程问答-------------------- 虽然自己现在还在处于基础学习阶段,但感觉那还是不错的 --------------------编程问答-------------------- 前后台的异步交互,确实没什么... --------------------编程问答-------------------- 虽然看不明白你想说什么,不过还是对你说,你辛苦了 --------------------编程问答-------------------- 呵呵,不知道俺们在吐槽啥子把

如果不知道那就问问你自己吐槽过那些《21天精通xxx》滴书木有
在问问自己吐槽过在百度上从来搜不到正儿八经的技术资料木有
在问问自己吐槽过从博客园抄来滴代码,被领导批为毫无意义的做法木有

--
如果你自己都吐槽过就明白俺们在吐槽啥子了,还是那句话从不反对分享,分享要有意义,否则就和你们口中那些你自己吐槽过N遍的“今年过年不收礼啊不收礼”“羊羊羊,猪猪猪,牛牛牛”那种XX广告轰炸一样,你自己是爽了,看广告滴都的吐血 --------------------编程问答-------------------- 除 --------------------编程问答--------------------

--------------------编程问答-------------------- 楼上说的都很有意思啊,总之这种贴不发为好啊 --------------------编程问答-------------------- 山东饭馆

        
--------------------编程问答--------------------

            听有趣的话题讨论。
        
--------------------编程问答--------------------

            不批评不讨论怎么进步,那只会原地踏步
        
--------------------编程问答--------------------

            为分享产生如此分歧的还不多见,呵呵。
        
--------------------编程问答--------------------

            一方面,楼主说的分享也分不同层次,是有道理的。
另一方面,楼主也应该从不同意见中汲取经验。他们说得相对还不太具体,如果你沉下心多看看编程思想方面的资料,应该象他们说的,回顾时会发现很多不足,这不是坏事,证明你提高了。
所以在这里如果有人指出你技术上的不足,其实都是好事。相反,从阿谀奉承的人身上,你永远得不到对自己真正有益的提升。 --------------------编程问答-------------------- 看样子楼主花了不少心思弄出来的,这种精神很不错,大大们也别打击她,都是一步步过来的... --------------------编程问答-------------------- 呵呵,打击?你们从那里看出打击了呢?

从头看开始一个回复就是,木有问题。自己当日志记录一下就ok,不建议如此公开。因为这代码本身没有什么值得公开的价值,不值得公开去误导后面的人,而且我可以说,3个月后lz自己再会来看看你公开的这东西,也只会笑而不语,奇怪当初自己这代码写滴怎么还可以如此公开了 --------------------编程问答-------------------- 然后在絮叨一句:
可以看得出lz是个用心的人,但是你自己也是一个深受博客园那种只有3个月有效期的日记式分享的毒害的人
从你代码里,我可以看到很多博客园这类文章的大杂烩,想必写的时候也一点参与了不少博客园的文章

从你这代码里,我们可以看到10年前博客园从vb过来的时候,那些抱着第一版,第二版红皮书时期的写的datatable滴代码,也可以看到5年前json刚开始流行的时候的入门日记式文章的影子,更可以看的到net1.0,net2.0时代在博客园大量的入门日记文章的痕迹

MM哦,5年前,10年前的文章都可以影响到现在的你,可见这种3个月有效期的日记式还大众化的分享到底有多可怕了 --------------------编程问答-------------------- 除 --------------------编程问答--------------------  妹子发的东东,大致浏览了一下,写的还是可以的,至少有成果。那个撒,不是每个人生来都是会跑的,不断学习,不断进步 --------------------编程问答-------------------- 复制过来后排下版啊。不排版的长代码看着晕 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 55 楼 5653325 的回复:
复制过来后排下版啊。不排版的长代码看着晕

是,我错了……博客里看着自我感觉挺好的,复制过来就没管它好不好…… --------------------编程问答--------------------
引用 56 楼 huaneramn 的回复:
看不懂,但是感觉很厉害的样子

其实只是一个简单应用呀……用过了,就觉得原来它so easy…… --------------------编程问答--------------------
引用 54 楼 zting125240 的回复:
妹子发的东东,大致浏览了一下,写的还是可以的,至少有成果。那个撒,不是每个人生来都是会跑的,不断学习,不断进步

恩恩,不断学习,不断进步,一个一个台阶往上爬…… --------------------编程问答-------------------- 唉
现在的年青人,说不得,骂不得,更是打不得,火气挺大,蹦老高
喜欢表扬,最好你帮他写代码
但是聪明的年青人,会从前辈的批评中学到东西

闲话,大家不要见怪 --------------------编程问答--------------------
引用 60 楼 diecode 的回复:

现在的年青人,说不得,骂不得,更是打不得,火气挺大,蹦老高
喜欢表扬,最好你帮他写代码
但是聪明的年青人,会从前辈的批评中学到东西

闲话,大家不要见怪

不知道您想表达什么…… 先做好模范,自然有人接受您的指正……倚老卖老时,当然没人听了…… --------------------编程问答-------------------- 写的很好,支持 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 值得一看,谢谢分享 --------------------编程问答-------------------- 一个个的怎么那么混呢?CSDN你家的?互联网你家的? 整天觉得自己是个大神,用自己思维管控着这个世界。
有几个BZ那是特别讨厌,记得开始学习的时候,只要在CSDN提问,麻痹就会摆出一副训人的样子。
   这篇文章就是再不得劲,也不这样吧,不要总是摆出一副很崇高的样子,那样只会令人生厌。.NET板块和SQL板块比较简直太差了。 --------------------编程问答-------------------- 在国内发帖 和 国外发帖 区别很大 。
--------------------编程问答-------------------- gson解析容易点吧、、 --------------------编程问答-------------------- 看不懂前端的东西,好像很厉害的样子... --------------------编程问答-------------------- 好好努力,你可以定位 --------------------编程问答-------------------- Lz心态很好 --------------------编程问答-------------------- 恩,不错不错,看不懂 --------------------编程问答-------------------- 这个确实算是基础啦~只是一般所谓.net程序员喜欢直来直去,一堆控件~都懒得搭ajax框架。

当然,分享精神还是很重要的。

另:如果LZ真心想跟初学者分享的话,不应该这样分享代码的~
   要么就贴关键部分,你这样贴一大堆冗余代码,没几个有耐心看,就算看了,也很费劲。 --------------------编程问答--------------------  如果没博客园的链接 一般看这帖子 真不愿意再看下去
 
 N个月后  如果有人搜到这帖子 估计还是愿意去看园子的 --------------------编程问答--------------------
引用 65 楼 nonglizhi 的回复:
一个个的怎么那么混呢?CSDN你家的?互联网你家的? 整天觉得自己是个大神,用自己思维管控着这个世界。
有几个BZ那是特别讨厌,记得开始学习的时候,只要在CSDN提问,麻痹就会摆出一副训人的样子。
   这篇文章就是再不得劲,也不这样吧,不要总是摆出一副很崇高的样子,那样只会令人生厌。.NET板块和SQL板块比较简直太差了。

GBZ --------------------编程问答--------------------
引用 24 楼 mazhaojuan 的回复:
引用 22 楼 yyl8781697 的回复:LZ  你代码贴太多了,反而思路讲少了,这样的 我们很不愿意看的 
还是看我博客吧……

看博客 --------------------编程问答-------------------- wanghui0380 哥这种级别人物,已经到了返璞归真的地步。

技术对于他们不是重点,他们更多考虑管理、化技术为资金,更节约能耗,LZ代码写的太琐碎,可读性差,如果是小弟,你已经有效的影响整个项目的性价比,对于他来讲,写代码只不过用来放松下心情,调节下内分泌。

估计LZ要是7、8年前推出这个帖子,可能马上就是ajax no.1。现在这样冷落,就是会的人太多了。搞搞更高深的会得到追捧的。

--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 没看明白怎么使用???? --------------------编程问答-------------------- 除 --------------------编程问答-------------------- CSDN没话说了,这个都推荐,有什么意义吗?或者你可以栏目专门给新手看的,然后推荐这样的帖子吧 --------------------编程问答-------------------- 非常的好哦。。 --------------------编程问答-------------------- 其实吧, 看你写了这么多 . 
如果你真想表达针对json 解析什么之类的. 你就帖一些关键代码就ok了.
现在什么json 解析 ,ajax+ashx+json  百度上查下,不是一大堆么.
当然 我也不是打击你. 发帖,把自己的整理发出来当然好 . 
但是没必要发那些离开主题的.  例如你现在讲到"通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中 ".
你就贴上,前端获取 ajax post 到后台 ashx ,并且解析json字符串, 就ok了.
至于什么界面代码,什么数据库操作 ,就么必要了. 如果连那些基本的都不会的, 那你发这些也是茫然.
--------------------编程问答-------------------- 分享的精神可嘉,LZ这个帖子发的值了,至少知道了下次再分享贴出核心关键代码以及思路,精简文章 --------------------编程问答-------------------- 太过具体而琐碎,却又很基础的东西, 楼主可以在自己的博客上写, 作为以后工作上的参考。 帖子上如果要分享, 最好还是提取精华和思路。  --------------------编程问答-------------------- 新手进来学习下~~谢谢分享 --------------------编程问答-------------------- sp1234 虽然你是大师,但是你也是从不会到会的哦,人总需要一个过程,楼主有这种精神,还是值得鼓励的。
你这么是不是该说点什么了? --------------------编程问答--------------------
引用 14 楼 sp1234 的回复:
太繁琐太低级。如果我想学c#,我看到这种教程,我就会放弃c#。

要尽可能少写代码,最好不写代码,那才是编程之道。
还需要程序员吗?你不觉得这是在误导吗?,我觉得写代码要有技术含量,最好是代码量少,性能好,有意义,识别度高... 这样境界的人或许已经是年薪级别的人物 --------------------编程问答-------------------- 建议:转json格式可以到网上搜下有个jsonhelper的类.  然后隐藏域之类的服务器控件.能用html标签尽量使用html标签实现..aspx服务器控件最终还是会转换成html的转换成html的 ,c#代码过于臃肿,代码重用性不高 --------------------编程问答-------------------- 这个程序这么复杂呀! --------------------编程问答-------------------- 看的俺眼也花了 --------------------编程问答-------------------- 很是专业呀还需要苦力学习呀 --------------------编程问答--------------------
引用 65 楼 nonglizhi 的回复:
一个个的怎么那么混呢?CSDN你家的?互联网你家的? 整天觉得自己是个大神,用自己思维管控着这个世界。
有几个BZ那是特别讨厌,记得开始学习的时候,只要在CSDN提问,麻痹就会摆出一副训人的样子。
   这篇文章就是再不得劲,也不这样吧,不要总是摆出一副很崇高的样子,那样只会令人生厌。.NET板块和SQL板块比较简直太差了。

同感啊,艹,有些人就那样,有什么资格训别人,有本事把csdn买了当自家菜园子。。。 --------------------编程问答--------------------
引用 30 楼 u010333614 的回复:
哇   感觉好复杂的说

使用后,发现不复杂啊 --------------------编程问答--------------------
引用 91 楼 keleopp 的回复:
看的俺眼也花了

对不起啊,我的错 --------------------编程问答--------------------
引用 92 楼 u010373843 的回复:
很是专业呀还需要苦力学习呀

一定一定…… --------------------编程问答-------------------- 非常用心非常专业,值得学习 --------------------编程问答-------------------- 看起来好长 --------------------编程问答-------------------- 学习学习大。。。。。。。。。。。。 --------------------编程问答--------------------
引用 26 楼 ly_sl 的回复:
自己感觉刚开始可以做很多的尝试,不怕错,但要及时改。
 
好的……
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,