这个Demo主要是自己做练习熟悉jquery,ajax,与xml文件的读写,以下是实现页面效果:

后台控制器:

        public ActionResult AddMsg()
{
XmlDocument xmlD = new XmlDocument();
xmlD.Load(Server.MapPath("/App_Data/info.xml"));
XmlNodeList nodeList=xmlD.SelectSingleNode("root").ChildNodes;
if (nodeList!=null)
{
List<Info> infoList = new List<Info>();
foreach (XmlElement node in nodeList)
{
infoList.Add(new Info(
node.SelectSingleNode("userName").InnerText,
node.SelectSingleNode("remark").InnerText,
node.SelectSingleNode("time").InnerText
));
}
ViewBag.infoList = infoList;
}
return View();
}
[HttpPost]
public ActionResult AddMesg()
{
string userName = HttpContext.Request["userName"].Trim();
string remark = HttpContext.Request["remark"].Trim();
if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(remark))
{
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm");
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("/App_Data/info.xml"));
XmlNode rootNode= xmlDoc.SelectSingleNode("root");
XmlNode infoNode = (XmlNode)xmlDoc.CreateElement("info");
XmlNode userNameNode = (XmlNode)xmlDoc.CreateElement("userName");
userNameNode.InnerText = userName;
XmlNode remarkNode = (XmlNode)xmlDoc.CreateElement("remark");
remarkNode.InnerText = remark;
XmlNode timeNode = (XmlNode)xmlDoc.CreateElement("time");
timeNode.InnerText = time;
infoNode.AppendChild(userNameNode);
infoNode.AppendChild(remarkNode);
infoNode.AppendChild(timeNode);
rootNode.AppendChild(infoNode);
xmlDoc.Save(Server.MapPath("/App_Data/info.xml"));
return Content("ok");
}
else
{
return Content("no");
}
}

view

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>AddMsg</title>
<script src="~/Content/Scripts/jquery-3.1.1.min.js"></script>
<script src="~/Content/Scripts/bootstrap.min.js"></script>
<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<script>
function isEmpty(title, object) {
var flag = true;
if (object == undefined || object.val() == '') {
alert(title+"不能为空");
flag = false;
}
return flag;
}
//js格式化日期方法
Date.prototype.Format = function (fmt) { //author: meizz
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"H+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
} $(function () {
$("input[type=button]").click(function () {
if (isEmpty("用户名", $("input[type=text]"))) {
if (isEmpty("评论", $("textarea"))) {
$("#divmsg").html("正在发送请求...").show();
$.post("@Url.Action("AddMesg", "Ajax")", { "userName": $("input[type=text]").val(), "remark": $("textarea").val() }, function (result) {
if ('ok' == result) {
$("#divmsg").html("评论成功...")
window.setTimeout(function () {
$("#divmsg").hide();
var strHTML = "";
strHTML = '<div class="col-lg-12 userInfo"><span style="color:#ff6a00">腾讯网友:</span><span style="margin-left:5px">' + $("input[type=text]").val() + '</span><br /><span class="col-lg-offset-1" style="font-size:14px">' + $("textarea").val() + '</span><br /><span class="pull-right">' +new Date().Format("yyyy-MM-dd HH:mm")+ '</span><br /><hr /></div>';
$("#infoList").append(strHTML);
$("input[type=text]").val('');
$("textarea").val('');
}, 2000);
}
})
}
}
})
})
</script>
<style type="text/css">
.userInfo {
margin:10px
}
span {
margin:10px
}
</style>
</head>
<body class="container">
<div class="col-lg-12" style="border:2px solid #000000;margin-top:50px;margin-bottom:400px">
<div class="col-lg-12">
<div class="col-lg-12">
<span class="bg-info">最新评论</span>
</div>
</div>
<div class="col-lg-12" id="infoList" style="margin:10px 5px;border:1px solid #000000;min-height:300px">
@{
var infoList = ViewBag.infoList;
if (infoList!=null && infoList.Count>0)
{
foreach (var info in infoList)
{
<div class="col-lg-12 userInfo">
<span style="color:#ff6a00">腾讯网友:</span><span style="margin-left:5px">@info.userName</span><br />
<span class="col-lg-offset-1" style="font-size:14px">@info.remark</span><br />
<span class="pull-right">@info.time</span><br />
<hr />
</div>
}
}
}
<div id="divmsg" class="col-lg-12" style="text-align:center;background-color:#00ffff;"></div>
</div>
<div class="col-lg-12" style="margin-top:20px;margin-bottom:10px">
<span>发表评论</span>
</div>
<div class="col-lg-12">
<textarea style="width:100%" rows="10"></textarea>
</div>
<div class="col-lg-12" style="margin:10px">
<span>用户名:</span>
<input type="text" class="text-primary" />
<input type="button" class="btn btn-primary pull-right" value="发表" />
</div>
</div>
</body>
</html>

每天进步一点点。

评论模块Demo(XML读写,定时器。)的更多相关文章

  1. Python模块 shelve xml configparser hashlib

    常用模块1. shelve 一个字典对象模块 自动序列化2.xml 是一个文件格式 写配置文件或数据交换 <a name="hades">123</a>3. ...

  2. Python(文件、文件夹压缩处理模块,shelve持久化模块,xml处理模块、ConfigParser文档配置模块、hashlib加密模块,subprocess系统交互模块 log模块)

    OS模块 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname")  改变当前脚本工作目 ...

  3. 【Python】Python XML 读写

    class ACTIVE_FILE_PROTECT_RULE_VIEW(APIView): renderer_classes = (JSONRenderer, BrowsableAPIRenderer ...

  4. python学习之路-7 模块configparser/xml/shutil/subprocess以及面向对象初级入门

    本篇记录内容 模块 configparser xml shutil subprocess 面向对象 面向对象基础 面向对象编程和函数式编程对比 面向对象中对象和类的关系 面向对象之构造方法 面向对象之 ...

  5. python的内置模块xml模块方法 xml解析 详解以及使用

    一.XML介绍 xml是实现不同语言或程序直接进行数据交换的协议,跟json差不多,单json使用起来更简单,不过现在还有很多传统公司的接口主要还是xml xml跟html都属于是标签语言 我们主要学 ...

  6. lua模块demo(redis,http,mysql,cjson,本地缓存)

    1. lua模块demo(redis,http,mysql,cjson,本地缓存) 1.1. 配置 在nginx.conf中设置lua_shared_dict my_cache 128m; 开启ngi ...

  7. python 之模块之 xml.dom.minidom解析xml

    # -*- coding: cp936 -*- #python 27 #xiaodeng #python 之模块之 xml.dom.minidom解析xml #http://www.cnblogs.c ...

  8. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验十九:SDRAM模块② — 多字读写

    实验十九:SDRAM模块② — 多字读写 表示19.1 Mode Register的内容. Mode Register A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A ...

  9. 09: xmltodict 模块将xml格式转成json格式

    1.1 : xmltodict 模块将xml格式转成json格式 <?xml version="1.0"?> <!--#版本号--> <data> ...

随机推荐

  1. 【8086汇编-Day6】关于loop的实验

    实验内容 因为是要复制代码,所以常规来做是取代码段地址来用,所以把cs值mov给ax,但是这只是临时的,ax之后还有别的用途,那就把指令当作数据来存(把ax值 mov给ds,表示这一段地址用作代码段, ...

  2. 【BZOJ3611】大工程(虚树,动态规划)

    [BZOJ3611]大工程(虚树,动态规划) 题面 BZOJ Description 国家有一个大工程,要给一个非常大的交通网络里建一些新的通道. 我们这个国家位置非常特殊,可以看成是一个单位边权的树 ...

  3. 西安Uber优步司机奖励政策(12月21日-12.27日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  4. C++中的引用常见用法

    1.引用的内涵 引用就是给变量取外号而已. 2.四种不能使用引用的情况 void &r=x; //不能建立void类型引用 int &&r=x; //不能建立引用的引用 int ...

  5. HBase 数据的多版本特性潜在的意外

    HBase做为KeyValue结构存储,在存储上是依照RowKey的字典序进行排序,对于很多应用而言这可能远远不够,好在HBase的数据可以存储多个版本,并且版本可以排序,其理论上最大的版本数目Int ...

  6. android 学习六 构建用户界面和使用控件

    1.常用Android控件最终都会继承自View类 2.ViewGroup是一些布局类列表的基类,包括View和ViewGroup 3.构造界面的三种方法    a.完全使用代码(太灵活,而不好维护) ...

  7. JavaWeb(三)——Tomcat服务器(二)

    一.打包JavaWeb应用 在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:

  8. 180706-BigDecimal除法的精度问题

    BigDecimal除法的精度问题 在使用BigDecimal的除法时,遇到一个鬼畜的问题,本以为的精度计算,结果使用返回0,当然最终发现还是自己的使用姿势不对导致的,因此记录一下,避免后面重蹈覆辙 ...

  9. Jmeter使用之:高效组织接口自动化用例技巧

    Jmeter怎么使用的文章多如牛毛,但怎么组织好测试用例,则几乎很难看到.在本文,我将把Jmeter下怎么组织测试用例的几点心得分享给大家,希望能给你一些帮助或启示. 1.善用“逻辑控制器”中的“简单 ...

  10. Ubuntu安装netdata监控平台

    介绍 Netdata通过可扩展的Web仪表板提供准确的性能监控,可以显示Linux系统上的流程和服务.它监控有关CPU,内存,磁盘,网络,进程等指标. Netdata官网地址:https://my-n ...