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

在输出输入相关文字时会有与之对应的相关提醒,作为一个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 > )
{
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 = , 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>

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

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

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

  1. jquery ajax json简单的分页,模拟数据,没有封装,只显示原理

    简单的分页,模拟数据,没有封装,显示原理,大家有兴趣可以自己封装,这里只是个原理过程,真正的分页也差不多是这个原理,只是请求数据不太一样,html部分: <!TOCTYPE HTML> & ...

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

    http://my.oschina.net/xshuai/blog/345117?fromerr=hEXYMdR0 http://www.oschina.net/code/snippet_144464 ...

  3. 初探Node-red结合阿里云数据库,定时显示数据

    在最近的项目中,隔壁项目组推荐了一个很好的基于node.js开源IOT框架Node-Red,它的优点很明显,使用可视化编程的方式,实现了大部分需要在物联网领域的技术,而且能很好的对接各个云平台,快捷部 ...

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

    项目需求:这里暂且叫A公司吧,A公司有一套人事管理软件,需要与我们公司的软件做人员信息同步,A公司用的是SQL server数据库,我们公司用的Oracle,接口都不会开发(一万句"fuck ...

  5. 基于MVC4+EF5.0+Ajax+Json+CSS3的简单注册页面(get&post)

    使用mvc4可以很快速的创建页面,但封装的过多,难免会有些性能上的问题.所以基于此,通过使用简单的手写html,加ajax,json来创建一个注册页面,会比较干净,简洁. 本项目的环境是MVC4+EF ...

  6. Django+Ajax+Mysql实现数据库数据的展示

    最近老师让搞一个系统,仅仅展示一下数据库的数据 在做海底捞时,是交接的师兄的项目,用的语言是java,框架是SSM(Spring.SpringMVC.MyBatis),这次我准备用Python写,前端 ...

  7. AJAX && JSON之讲解

    Ajax技术的核心是XMLHttpRequest对象(简称XHR),可以通过使用XHR对象获取到服务器的数据,然后再通过DOM将数据插入到页面中呈现.虽然名字中包含XML,但Ajax通讯与数据格式无关 ...

  8. Django 之Ajax&Json&CORS&同源策略&Jsonp用法

    什么是Json 定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子集 ...

  9. jQuery +ajax +json+实现分页

    正文 首先我们创建一般处理程序,来读取数据库中内容,得到返回值. 创建文件,GetData.ashx. 我这里是用的存储过程,存储过程会再下面粘出来,至于数据只是实例,你们可根据需求自行读取数据 代码 ...

随机推荐

  1. Fiddler Web Debugger是什么?(图文详解)

    不多说,直接上干货! 1.为什么是Fiddler? 抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark. 见 Windows里安装wireshark或 ...

  2. LogStash启动报错:<Redis::CommandError: ERR unknown command 'script'>与batch_count 的 配置

    环境条件: 系统版本:centos 6.8 logstash版本:6.3.2 redis版本:2.4 logstash  input配置: input { redis { host => &qu ...

  3. php使用date()函数时,提示的警告

    转载:http://www.shangxueba.com/jingyan/121682.html 在用PHP5.3以上的PHP版本时,只要是涉及时间的会报一个: "PHP Warning: ...

  4. Java封装Redis常用操作

    package com.advance.Redis; import org.apache.log4j.Logger; import org.testng.annotations.Test; impor ...

  5. Spring配置Quartz任务调度、及 ThreadPool 线程池

    ONE.除了引入 Spring 相关的 jar 包,还要引入 Quartz 的 jar 包 <dependency> <groupId>org.springframework& ...

  6. [转]使用BCP导出导入数据

    本文转自:http://www.cnblogs.com/zerocc/p/3225723.html bcp 实用工具可以在 Microsoft SQL Server 实例和用户指定格式的数据文件间大容 ...

  7. ILMerge将源DLL合并到目标EXE

    ILMerge将源DLL合并到目标EXE(.NET4.6.2) 本文为原创文章,如转载,请在网页明显位置标明原文名称.作者及网址,谢谢! 本文主要是使用微软的ILMerge工具将源DLL合并到目标EX ...

  8. 如何使用 Telegram

    Telegram是一款加密的实时通讯软件,本文告诉大家如何使用 这个软件. 在使用之前,需要保证自己已经开了梯子,如果没有梯子,那么就无法使用这个工具. 假如梯子是 127.0.0.1 端口 1080 ...

  9. C#基础笔记(第十四天)

    1.MD5加密 用户在数据库存密码需要进行再加密,这样一个过程叫MD5加密只要涉及到存用户的密码一定要用MD5加密MD5密码一般都是16进制的把一个密码转换成16进制的过程就叫MD5加密把字符串加密成 ...

  10. webpack 项目实践

    1,必要的环境 node 环境 下载地址(http://nodejs.cn/) npm 貌似 下载地址(https://www.npmjs.com/)不过,貌似 Node 安装可自带 npm. 2, ...