MVC $.Ajax()+Json实现数据库访问并显示数据

我们在使用搜索引擎时经常会看到这样一个效果

在输出输入相关文字时会有与之对应的相关提醒,作为一个MVC初学者我也做了一个简单版的“搜索工具”,分享给初学mvc和ajax的童鞋(各位大神勿喷),也加深我对代码的理解

第一部数据部分:数据库部分,你可以自己建一张表,然后加几条数据就可以了,我在此用的是我自己做的一个测试系统的试题表

第二部 就是代码编写部分了,mvc Model部分我没有运用Linq或EF,而是运用了DBhelp类访问数据库,这样更易于初学者理解,下图Topic为上图的表类

后台代码:DBhelp相信大家都会写,这里我就不多说了

Model:Topic

public class Topic
    {
        public int T_ID { get; set; }
        public string T_Title { get; set; }
        public string T_AnswerA { get; set; }
        public string T_AnswerB { get; set; }
        public string T_AnswerC { get; set; }
        public string T_AnswerD { get; set; }
        public string T_Answer { get; set; }
        public int C_CourseID { get; set; }
        public string C_CourseName { get; set; }
    }

Controllers代码

Models.DBhelp help = new Models.DBhelp();
        DataTable table = new DataTable();
        public ActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Index(int? Tid)
        {
            table = help.getDataTable(string.Format(@"select * from Topic inner join Course
                                                    on Topic.C_CourseID=Course.C_C_CourseID
                                                    where T_ID=‘{0}‘", Tid));
            if (table.Rows.Count > 0)
            {
                List<Models.Topic> list = new List<Models.Topic>();
                foreach (DataRow item in table.Rows)
                {
                    Models.Topic T = new Models.Topic();
                    T.T_ID = Convert.ToInt32(item["T_ID"]);
                    T.T_Title = item["T_Title"].ToString();
                    T.T_AnswerA = item["T_AnswerA"].ToString();
                    T.T_AnswerB = item["T_AnswerB"].ToString();
                    T.T_AnswerC = item["T_AnswerC"].ToString();
                    T.T_AnswerD = item["T_AnswerD"].ToString();
                    T.T_Answer = item["T_Answer"].ToString();
                    T.C_CourseID = Convert.ToInt32(item["C_CourseID"]);
                    T.C_CourseName = item["C_CourseName"].ToString();
                    list.Add(T);
                }
                /*如果有多张表最好将集合转换为JsonResult对象*/
                //JsonResult json = new JsonResult
                //{
                //    Data = list
                //};
                return Json(list);
            }
            else
            {
                return Json("No");
            }
        }


前台代码

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <script src="~/Scripts/jquery-1.10.2.js"></script>
    <script src="~/Scripts/jquery.validate-vsdoc.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#text").bind("keyup", function () {
                if ($("#text").val() == "") {
                    $("#showDiv").empty();//清空标记类容
                    return;
                } else {
                    $.ajax({
                        type: "post",
                        url: "/Home/Index",
                        data:
                            {
                                Tid: $("#text").val()
                            },
                        datatype: "json",
                        success: function (data) {
                            if (data == "No") {
                                $("#showDiv").text("非法数据");
                            }
                            else {
                                var strHTML = "";
                                $("#showDiv").empty();
                                //用$.each方法解析获取到的Json
                                //$.each(data, function (i, Que) {
                                //    strHTML += "编号" + Que["T_ID"] + "<br/>";
                                //    strHTML += "科目" + Que["C_CourseName"] + "题目" + Que["T_Title"] + "<br/>";
                                //    strHTML += "A:" + Que["T_AnswerA"] + "<br/>";
                                //    strHTML += "B:" + Que["T_AnswerB"] + "<br/>";
                                //    strHTML += "C:" + Que["T_AnswerC"] + "<br/>";
                                //    strHTML += "D:" + Que["T_AnswerD"] + "<br/>";
                                //    strHTML += "答案:" + Que["T_Answer"] + "<br/>";
                                //});
                                //用for循环解析获取到的Json
                                for (var i = 0, length = data.length; i < length; i++) {;
                                    strHTML += "编号" + data[i].T_ID + "<br/>";
                                    strHTML += "科目" + data[i].C_CourseName + "\
                                                <br/>题目" + data[i].T_Title + "<br/>";
                                    strHTML += "A:" + data[i].T_AnswerA + "<br/>";
                                    strHTML += "B:" + data[i].T_AnswerB + "<br/>";
                                    strHTML += "C:" + data[i].T_AnswerC + "<br/>";
                                    strHTML += "D:" + data[i].T_AnswerD + "<br/>";
                                    strHTML += "答案:" + data[i].T_Answer + "<br/>";
                                }
                                $("#showDiv").html(strHTML);
                            }
                        }
                    });
                }
            })
        });
    </script>
    <title>Index</title>
</head>
<body>
    <div id="textDiv">
        <input type="text" id="text" />
    </div>
    <br />
    <div id="showDiv"></div>
</body>
</html>

完成后的效果是这样的,输入对应的试题编号,就会无刷新的显示对应试题信息

当然你会说这个效果与搜索引擎的效果相差甚远,但是当你仔细分析两者之间的原理时,你会发现这就是一个简单的搜索引擎效果,任何东西都是由简到复杂的,在学习编程时,我们只有弄懂一段段简单的代码的原理,才能在实践过程中更好的去理解和操作代码

时间: 2024-10-06 12:13:10

MVC $.Ajax()+Json实现数据库访问并显示数据的相关文章

Oracle DBLink跨数据库访问SQL server数据同步 踩坑实录

项目需求:这里暂且叫A公司吧,A公司有一套人事管理软件,需要与我们公司的软件做人员信息同步,A公司用的是SQL server数据库,我们公司用的Oracle,接口都不会开发(一万句"fuck you"),就单单给我们公司提供了一个SQL server的账户和密码,还有一个视图.后来百度一番,可以通过DBLink跨数据库访问,然后做数据信息同步功能. 安装过程中,踩了不少的坑,需要配置很多的东西,QQ群里也请教不少人,都很少人听说还有这玩意,现在做数据对接,都是走到接口,传JSON字符串

Highcharts AJAX JSON JQuery 实现动态数据交互显示图表 柱形图

这是第一篇实例的步骤与代码.还有整个项目的结构图. http://my.oschina.net/xshuai/blog/345117 原创的博文.转载注明出处.大家赶紧收藏吧.  本人highcharts新手.只是做个了练手的实例.还望大神指点. 上个图给大家看下效果. 点击  查看图表 如下图展示效果 Highcharts简介 Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网

032.Ajax+Json+Jquery

AjjA: AjaxJ: JSONJ: jQuery -----------------------------------------------JSONJavascript Object NotationJS对象标记 class User{ public int Id{get;set;} public string Name{get;set;} public string Phone{get;set;} // public string HomeAddress{get;set;} // pu

echarts3+ajax+json+SpringMVC+mybatis

最近使用的东西有点多,就不分开描述了,写在一起,也比较连贯 最近在写统计查询,所以用到了echarts3,用了几个小时看了下,还是不错的,主要准备好字符串,直接嵌入就可以 下面我描述下需求,这样在看代码还能有一些针对性 需求:实现对访问记录的统计,每天一个访问记录表,需要根据时间段进行查询(这里面就设计到联调查询),同时,在页面点击某一天的数据时,需要显示这一天每个时段的访问人数(这里面就有点意思了,用到了ajax+json) 好,先附一张截图 这就是最后显示的样子,下面来点实惠的,上代码~ 我

《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中

http://blog.csdn.net/mazhaojuan/article/details/8599167 先看一下我要实现的功能界面: 这篇文章主要介绍:后台一般处理程序把从数据库查找的数据,转换成JSON,然后传递到前台JS文件中,JS解析JSON数据,并将数据显示在界面,主要介绍两种显示方式,显示在DropDownList控件 or 显示在动态创建的Table表中.   本文主要介绍两个地方: 1.根据学年查询学期信息的实现--JS将解析的JSON数据绑定到DropDownList框

基于Jquery+Ajax+Json+高效分页

首先我们创建一般处理程序,来读取数据库中内容,得到返回值. 创建文件,GetData.ashx. 我这里是用的存储过程,存储过程会再下面粘出来,至于数据只是实例,你们可根据需求自行读取数据 代码如下: <%@ WebHandler Language="C#" Class="GetData"%> using System;using System.Web;using System.Data.SqlClient;using System.Data;using

使用Ajax+jQuery来实现前端收到的数据在console上显示+简单的主页设计与bootstrap插件实现图片轮播

1.实现前端输入的数据在console上显示 上一篇是解决了在前端的输入信息在cygwin上显示,这次要给前台们能看见的数据,因为数据库里插入的数据少,所以写的语句翻来覆去就那几个词,emmm···当然实现了个不靠谱的,在前台还能看见用户密码 ·····功能是这个意思hhhh 在register也就是注册界面部分的代码: <script> $('#submit').on("click ", function () { var a = $('#login input[name

JQuery+ajax+jsonp 跨域访问

Jsonp(JSON with Padding)是资料格式 json 的一种“使用模式”,可以让网页从别的网域获取资料. 关于Jsonp更详细的资料请参考http://baike.baidu.com/view/2131174.htm,下面给出例子: 一.客户端 Html代码   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.

JFreeChart与AJAX+JSON+ECharts两种处理方式生成热词统计可视化图表

本篇的思想:对HDFS获取的数据进行两种不同的可视化图表处理方式.第一种JFreeChar可视化处理生成图片文件查看.第二种AJAX+JSON+ECharts实现可视化图表,并呈现于浏览器上.   对此,给出代码示例,通过网络爬虫技术,将上传到HDFS的新浪网新闻信息实现热词统计功能,通过图表的柱状图来显示出来. ------> 目录: 1.JFreeChart可视化处理(生成本地图片) [1]HDFS文件读取 [2]JDFreeChart库应用 2.AJAX+JSON+EChart生成可视化图