一般处理程序与网页传值

最近需要做一个程序,用来读取数据库的数据并传递给网页展示,应该是类似于一个后台了吧,只不过不用处理数据。

之前没有接触过这个,所以一开始没有什么头绪,左问问右问问才得到一个思路,那就是用一般处理程序拼接json,然后用context.response传出去,于是新一轮的学习又开始了。

首先是一般处理程序的写法,既然是需要读取数据库,那肯定需要连接数据库,一般处理程序可以写web.config文件,所以连接还是很简便的。然后就是一般处理程序本体了,我写的本体的思路其实很简单,就是读取数据,将读取的数据放到datatable里面,然后再将读取的数据拼接成json格式的字符串,拼好以后一股脑丢出去,下面就贴上代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Data.SqlClient;
using System.Text;
using System.Configuration;
using System.Data;


namespace test
{
    /// <summary>
    /// Handler1 的摘要说明
    /// </summary>
    public class Handler1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";

            //接收前端发来的deviceNo
            string deviceNo = context.Request.Form["DeviceNo"];

            //接收到以后按条件查询数据
            string sql = "select * from (表名) where deviceNo = '" + deviceNo + "'";
            
            string sql1 = ConfigurationManager.ConnectionStrings["(数据库名)"].ToString();
            SqlConnection conn = new SqlConnection(sql1);
            try
            {
                conn.Open();
            }
            catch
            {
                
            }

            SqlDataAdapter sda = new SqlDataAdapter(sql, conn);

            //将读到的数据填充到datatable中
            DataTable dt = new DataTable();
            sda.Fill(dt);

            conn.Close();

            //以下就是拼接json字符串
            StringBuilder jsonBuilder = new StringBuilder();
            jsonBuilder.Append("[");

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                jsonBuilder.Append("{");
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    jsonBuilder.Append("\"");
                    jsonBuilder.Append(dt.Columns[j].ColumnName);
                    jsonBuilder.Append("\":\"");
                    jsonBuilder.Append(dt.Rows[i][j].ToString());
                    jsonBuilder.Append("\",");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("},");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            jsonBuilder.Append("]");

            //将拼接好的字符串发送出去
            context.Response.Write(jsonBuilder.ToString()); 
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

然后一般处理程序写好以后就是前端网页干活了,网页端就接收一个用户输入的东西,然后传给一般处理程序,再解析一般处理程序返回的json,一一展示到页面上就OK了,因为之前没有怎么接触过javascript,所以这里头疼了好久

$("#search").click(function () {
            var str = $("#dn").val();
            $.ajax({
                type: "POST",
                url: "Handler1.ashx",
                //datatype: "script",  这个datatype只有在特定的格式才会被用到,比如前端传json到后台,这个datatype后面就加个"json"
                data: "deviceNo=" + str,
                error: function () {
                    alert("error");
                },
                success: function (msg) { //能通信成功的话就会执行下面的语句,但是它是没有检错能力的,所以要自己设定误操作或是各种提示的逻辑
                    if (msg == "]") { //这里其实就是偷个懒,因为一般处理程序里面没有找到数据的话会返回一个"]",所以我就直接这样判断了
                        alert("没有找到数据");
                    }
                    else {
                        var dataObj = JSON.parse(msg);  //JSON.parse()的作用是解析json的value,看下面的语句应该就很好理解了
                        document.getElementById("DeNo").value = dataObj[0].deviceNo;
                        document.getElementById("DeName").value = dataObj[0].deviceName;
                        document.getElementById("CityId").value = dataObj[0].cityId;
                    }
                }
            })
        })

我这里省略了web.config和html的代码,只贴出了jquery的按钮点击事件,不过重点也就在这个按钮里,缺少的只是HTML的页面代码,因为没有多大的必要贴出来。

如果是萌新请看一看:jquery代码是需要有jquery的库,它本身是一个js文件,以js文件的方式使用,这个文件是需要去网上下载的

我也是萌新,希望路过的大佬能提一提改进的意见,谢谢


猜你喜欢

转载自blog.csdn.net/qq_31284831/article/details/80666959