惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
酷 壳 – CoolShell
酷 壳 – CoolShell
Forbes - Security
Forbes - Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
小众软件
小众软件
人人都是产品经理
人人都是产品经理
Know Your Adversary
Know Your Adversary
Security Latest
Security Latest
雷峰网
雷峰网
Cisco Talos Blog
Cisco Talos Blog
Latest news
Latest news
GbyAI
GbyAI
Last Week in AI
Last Week in AI
Hacker News: Ask HN
Hacker News: Ask HN
U
Unit 42
S
SegmentFault 最新的问题
月光博客
月光博客
Security Archives - TechRepublic
Security Archives - TechRepublic
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
A
Arctic Wolf
Schneier on Security
Schneier on Security
C
CERT Recently Published Vulnerability Notes
I
Intezer
V
Visual Studio Blog
Microsoft Security Blog
Microsoft Security Blog
SecWiki News
SecWiki News
Google Online Security Blog
Google Online Security Blog
N
Netflix TechBlog - Medium
I
InfoQ
T
Tor Project blog
腾讯CDC
T
Tenable Blog
Webroot Blog
Webroot Blog
Y
Y Combinator Blog
TaoSecurity Blog
TaoSecurity Blog
Google DeepMind News
Google DeepMind News
AI
AI
C
Cisco Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V2EX - 技术
V2EX - 技术
PCI Perspectives
PCI Perspectives
C
CXSECURITY Database RSS Feed - CXSecurity.com
G
GRAHAM CLULEY
S
Schneier on Security

博客园 - 天天无用

jsonp原理实例及mvc中的应用 ubuntu笔记 修复MVC3中使用Remote验证的一点小问题 诺基亚手机S60系统证书申请、软件签名图文教程 初探JAXER Jquery插件研究:Ajax File Upload 本月wii游戏太多,感觉有点堕落 使用jQuery加DIV实现可以动态添加的金字塔结构 自制的操作下拉列表框(SELECT)的三个jquery插件(ajax填充、联动、增加选项) - 天天无用 - 博客园 Asp.net 2.0 TreeView控件使用jQuery无刷新添加节点详细说明 用jQuery实现.net 2.0 treeview客户端无刷新操作的实例 基于jQuery的AJAX和JSON实现纯html数据模板 自己写的DataTable转换成JSON字符串的函数 自己写的jQuery自动完成的插件(AutoComplete) asp.net treeview控件无刷新选择和删除节点(使用jquery) - 天天无用 - 博客园 纵向合并gridview单元格的两种方法 .net下两种json序列化速度比对 asp.net 2.0 中 TreeView控件中的checkbox客户端操作 asp.net 2.0中根据roles显示不同的sitemap - 天天无用 - 博客园
JAXER留言板-一个html页面的ajax留言版 - 天天无用 - 博客园
天天无用 · 2008-01-26 · via 博客园 - 天天无用

    这几天一直在研究JAXER,结合jquery做了一个简单的留言板,只有一个html页面(除了jquery.js),当然是完全的ajax操作。
    全部代码如下:

  1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2 <html>
  3     <head>
  4         <meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
  5         <title>Jaxer 留言板</title>
  6         <script language=JavaScript type=text/javascript src=jquery.js>
  7         </script>
  8         <script runat=server>
  9             
 10             function GetDataDB(pageindex){
 11                 var para = new Array();
 12                 para[0= pageindex;
 13                 var rs = DBConn().execute("Select * from message order by oid desc limit (?-1)*10,10", para);
 14                 var clomnus = new Array();
 15                 clomnus[0= "name";
 16                 clomnus[1= "content";
 17                 clomnus[2= "addTime";
 18                 return rs.extractColumns(clomnus);
 19             }
 20             
 21             function InsertMessageDB(name, content){
 22                 var para = new Array();
 23                 para[0= unescape(name);
 24                 para[1= unescape(content);
 25                 Jaxer.Log.info(para[1]);
 26                 DBConn().execute("insert into message values(?,?,datetime('now','localtime'))", para);
 27             }
 28             
 29             function DBConn(){
 30                 return new Jaxer.DB.SQLite.Connection({
 31                     PATH: "e:\\test\\sqlite\\message.db3"
 32                 });
 33             }
 34         </script>
 35         <script runat=server-proxy>
 36             function GetData(pageindex){
 37                 return GetDataDB(pageindex);
 38             }
 39             
 40             function InsertMessage(name, content){
 41                 InsertMessageDB(name, content.replace(/ /g,"&nbsp;").replace(/\n/g,"<br />"));
 42             }
 43         </script>
 44         <script language=javascript>
 45             var currentPage = 1;
 46             $(function(){
 47             
 48                 bindData(currentPage);
 49                 
 50                 $("#button1").click(function(){
 51                     var name = $("#txtName").val();
 52                     var content = $("#txtContent").val();
 53                     if (name != "" && content != "") {
 54                         InsertMessage(escape(name), escape(content));
 55                         currentPage = 1;
 56                         bindData(currentPage);
 57                         $("#txtName").val("");
 58                         $("#txtContent").val("");
 59                     }
 60                     else
 61                     {
 62                         alert("请输入名字和内容。")
 63                     }
 64                 });
 65                 
 66                 $("#previous").click(function(){
 67                     currentPage = currentPage > 1 ? --currentPage : 1;
 68                     bindData(currentPage);
 69                 });
 70                 
 71                 $("#next").click(function(){
 72                     currentPage++;
 73                     bindData(currentPage);
 74                 });
 75             })
 76             function bindData(pageindex){
 77                 var msgdatas = GetData(pageindex);
 78                 $("[@id=ready]").remove();
 79                 if (msgdatas.length > 0) {                    
 80                     $.each(msgdatas, function(i, n){
 81                         var row = $("#msgData").find("#template").clone();
 82                         row.find("#name").text(n.name);
 83                         row.find("#addTime").text(n.addTime);
 84                         row.find("#content").html(n.content);
 85                         row.attr("id""ready");
 86                         row.appendTo($("#msgData"));
 87                     });
 88                     $("[@id=ready]").show();                    
 89                 }
 90                 $("#pageInfo").html("<b>"+currentPage+"</b>页");
 91             }
 92         </script>
 93     </head>
 94     <body>
 95         <table border=0 width=500 id=msgData>
 96             <tbody id=template style=display:none>
 97                 <tr>
 98                     <td colspan=4 height=5>
 99                     </td>
100                 </tr>
101                 <tr>
102                     <td>
103                         姓名:
104                     </td>
105                     <td id=name>
106                     </td>
107                     <td>
108                         留言时间:
109                     </td>
110                     <td id=addTime>
111                     </td>
112                 </tr>
113                 <tr>
114                     <td height=50 valign=top>
115                         内容:
116                     </td>
117                     <td colspan=3 id=content valign=top>
118                     </td>
119                 </tr>
120                 <tr>
121                     <td colspan=4 height=2 bgcolor=black>
122                     </td>
123                 </tr>
124             </tbody>
125         </table>
126         <table border=0 width=500>
127             <tr>
128                 <td colspan=2 id=pageInfo></td>
129                 <td colspan=2 align=right>
130                     <a href=javascript:void(0); id=previous>上一页</a>
131                     <a href=javascript:void(0); id=next>下一页</a>
132                 </td>
133             </tr>
134         </table>
135         <table>
136             <tr>
137                 <td>
138                     姓名:
139                 </td>
140                 <td>
141                     <input type=text id=txtName>
142                 </td>
143             </tr>
144             <tr>
145                 <td>
146                     内容:
147                 </td>
148                 <td>
149                     <textarea id=txtContent cols=20 rows=5></textarea>
150                 </td>
151             </tr>
152             <tr>
153                 <td>
154                     <input type=button id=button1 value=留言>
155                 </td>
156             </tr>
157         </table>
158     </body>
159 </html>

    一共就这159行,当然还有很多细节没有处理,不过感觉还可以。
    我最喜欢的是这个地方

 1            function GetDataDB(pageindex){
 2                var para = new Array();
 3                para[0= pageindex;
 4                var rs = DBConn().execute("Select * from message order by oid desc limit (?-1)*10,10", para);
 5                var clomnus = new Array();
 6                clomnus[0= "name";
 7                clomnus[1= "content";
 8                clomnus[2= "addTime";
 9                return rs.extractColumns(clomnus);
10            }

    用sqlite可以直接用"limit 起始行 行数"直接做分页,比用"top"方便多了,还有就是最后的"extractColumns"方法,直接可以返回json格式的数据,看绑定部分就知道了。
    下载地址:http://download.csdn.net/user/luq885运行方法看这里http://www.cnblogs.com/luq885/archive/2008/01/25/1052288.html,改一下数据库的路径就可以了。