InnerHTML 实现伪 AJax 效果

最近在折腾毕设,希望给开发中的项目增加 Ajax 效果,通过异步加载和视觉反馈,以增强用户体验。

在了解了 Ajax 的原理(果然了解一件事物最好的方式是去了解其运作原理,最好是自己复刻一遍)之后,联想到此前玩 GreaseMonkey 时了解到的 InnerHTML 的用法,自作聪明地琢磨了一个用 InnerHTML 实现 Ajax 效果的简单伪办法

事情是这样的。使用 Ajax,需要掌握 Javascript 编写技能,理解 XMLHttpRequest 对象,并且在与服务器的连接和响应确认上来回折腾。其实从功能实现层面来看,使用 Ajax 的目的无非在于:1)前台动态改变页面内容,以响应用户操作;2)后台处理数据,例如将某个值传递到数据库。

通过 InnerHTML ,稍加转换思路,完全可以另辟蹊径,通过以下淫荡技巧实现:

1)前台动态改变页面内容。这个对于 InnerHTML 而言再简单不过了。tablerowObject.innerHTML=$str 语句就是用来改变页面中某个元素的内部代码。如 document.getElementById(“div1″).innerHTML=”<strong>Hello World</strong>” 就是一个典型的实例。

2)后台处理数据。用 InnerHTML 同样可以实现,办法是 —— iframe!没错,用 InnerHTML 为页面新开一个 iframe(当然长宽调成0可使其隐藏而不显示在页面内),直接 src 到一个负责处理数据的带参数的页面,例如 do.php?action=add&message=aloha 。这个 do.php 负责接收参数并完成处理,比如将 aloha 这个字符串写进数据库。

编写一个简易版 Facebook 的 Like 按钮举例。通过上述方法,编写的思路是:

  • 1)前台用 InnerHTML 将 X people like 中的 X 加 1 (此处 X 可能需事先从数据库读取);
  • 2)InnerHTML 开个 iframe (地址形如 do.php?statue=12345&action=likeadd);
  • 3)编写 do.php,获取参数,最终将数据库中编号为 12345 的这条状态的 like 数量 +1 。

此方法的适用场合:系统架构不复杂,传递的参数不多,对安全性和稳定性的要求不高,以及懒得写 Ajax(比如糊弄毕设这档子事儿) …

我的个人知识管理工具 [PKM]

# 这篇文章原本发表在个人博客。考虑到同步控和 GTDer 也有需求,因此特转刊于此。GTDStudy 的 Yibie 说我无意中完成了完整工具链的构造。其实什么工具链不工具链的,就是平时一点点使用经验的积累,个人的懒惰助长了我寻求工具借力的需求而已。

之前曾写过一篇《我的时间管理(GTD)工具》。应网友要求,再分享一下我的个人知识管理(Personal Knowledge Management,PKM)工具。

为什么要进行知识管理:

  • 这是一个将被动的“海绵式学习”(单纯吸收)转变为主动的“淘金式学习”(注重批判及与知识的互动)的过程,通过一系列的知识管理过程(收集->组织->分析->总结->实践->发表->对话),将别人的知识技能固化到自己的头脑中。
  • 知识爆炸,信息过载时代,相对有限的记忆力系统应当善于对所摄取的内容进行合理整顿,否则极易迷失在信息的海洋中,辨不清何智慧,知识与信息三者之间的区别。
  • 个人学业和专业需要,有时候想方案做创意并不是简单地拍一下脑袋或者搜索一下就能出来的,需要长期的积累,才能达到“万物皆备于我”的境界。
  • 长不出钱钟书的脑袋,咱配合现代化手段,效法一下钱的研习精神,还不行嘛。

我选择知识管理工具的标准:

  • 功能强大,能以相对低廉的成本和图形化界面,完成知识的收集、分类、存储、检索、重构。
  • 可扩展,能跟外部程序交换数据(导入/导出),支持同步,可保留镜像。
  • 工具本身并不会加重我的信息焦虑。

我使用的知识管理工具:

1、Google Reader + Gmail

我每天必用 Google 旗下服务,将其当做个人知识整理系统的关键中枢。Google Reader 是我的主力RSS阅读器,Gmail则是主力邮箱。二者相互结合,可以实现知识信息的有效组织。

如下图,在GR中看到值得收藏的文章,可点击文章下部的Email按钮,将其发送为电子邮件。通常我会在邮件中加注关键词,并标记上“#kms”(这里含义是 knowledge management system,你可以修改为任何你喜欢的)。

Continue reading “我的个人知识管理工具 [PKM]”