这个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. Python入门 (三)

    迭代器与生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器 ...

  2. fedora/centos下gcc编译出现gcc: error trying to exec ‘cc1plus’: execvp: No such file or directory

    fedora/centos下gcc编译出现gcc: error trying to exec 'cc1plus': execvp: No such file or directory解决办法 翻译自: ...

  3. Lvm linux磁盘分区管理(多个分区合并成一个)

    备份# rsync -avP -e ssh /data qqmap@10.173.139.100:/data1/qqmap/backup/10.234.22.143卸载# umount /data / ...

  4. 成都Uber优步司机奖励政策(2月1日)

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

  5. 模拟登陆百度以及Selenium 的基本用法

    模拟登陆百度,需要依赖于selenium 模块,调用浏览器,执行python命令 先来说一下这个selenium模块啦...... 本文参考内容来自 Selenium官网 SeleniumPython ...

  6. Updating Homebrew... 长时间不动解决方法

    确保你已安装Homebrew 依次输入下面的命令(注意:不要管重置部分的命令,这里原作者贴出来.我也贴出来是以防需要重置的时候有参考操作命令) 替换brew.git: cd "$(brew ...

  7. iOS的内存分配

    iOS中的内存大致可以分为代码区,全局/静态区,常量区,堆区,栈区. 1.代码区 代码段是用来存放可执行文件的操作指令(存放函数的二进制代码),也就是说是它是可执行程序在内存中的镜像.代码段需要防止在 ...

  8. 使用Unity创建依赖注入

        这篇文章翻译自<Dependency Injection With Unity>第三章.文中提到的类似"前几节"的内容您不必在意,相信您可以看懂的. P.S:如 ...

  9. mysql面试常见题目3

    三十六大 冯唐 春水初生, 春林初盛, 春风十里,不如你. 秋风落叶, 秋雨绵绵, 愁心上秋,只为你. 某个员工信息表结构和数据如下: id name dept salary edlevel hire ...

  10. browsersync 插件

    自从发现了这个 browsersync 插件 ... 在也不用每次改一行代码就去手动刷新 HTML 页面了省去了很多繁琐的操作,当有多个显示器的时候,更加的方便,在IDEA上编辑代码之后,点击 com ...