当前位置: 首页 > news >正文

基于 Json 的富客户端简易分页留言板设计,附源码

原来认为写一个留言板应该是比较容易的事情,从没动过手,这回试着写了一个,感觉即容易也不容易。

容易的方面是留言板的结构很简单,发送数据到服务器->保存到数据库->返回新的数据到浏览器->刷新页面

不容易的地方是很多细节要注意,不知道什么地方一个小问题就出错了。

这个留言板前台使用 Flex ,文件二百多K,初次加载比较慢,运行起来就快了。后台使用 PHP ,用了 Codeigniter 框架,再加上大部分工作都有前台做,整个后台代码不到二十行。

前后台通信使用最简单的 http 页面方式,数据用 JSON 包装,JSON 极大的简化了工作流程,从数据库取出数据,转换成对象数组,把数组编码成字符串,写到页面,整个过程就OK了,到了前台再将这些字符串一解析,又还原成了对象。

看看返回的数据到底是什么样子,点击下面这个链接你可以看到 0 号页面返回的内容,有一些百分号之类的东西,那是因为所有字符串都编码了:
http://myqiao.oxyhost.com/ci/index.php/bbs/action_show/0

下面看看代码是如何的简单吧

    function show($page_no)
    {
        
//计算分页数
        $record_count=$this->db->count_all('t_message');
        
$page_count= Floor(($record_count-1)/PAGE_SIZE);
        
if($page_count<0)
            
$page_count=0;
        
        
//从 t_message 表中查询当前页面留言
        $this->db->order_by("id", "desc");
        
$query = $this->db->get('t_message', 10, 10*$page_no);

        
//将前台需要的数据装配成数组
        $arr = array(
              //当前页面号
            'current_no' => "{$page_no}" ,
            
'page_count' =>"{$page_count}" ,
            
'record_count' =>"{$record_count}" ,

            
//下面字段保存10条从数据空中查询来的留言信息,字段包括id username , content, time
            'message' => $query->result_array()

        );       
    //将数组编码成字符串
$json_string=$this->json->encode($arr);

    //响应给浏览器
        echo  $json_string;    
    }

 

留言板试用和查看全部源代码点击这里

进入留言板,点右键,弹出菜单选择 View Source 就可以看见源代码了

服务器是国外的一个免费 php 服务器,可能速度有点慢,大家发现什么错误给我留言哦。

 

 

相关文章:

  • Flash组件开发研究(1):简单的新闻列表
  • ASP.NET中的一些小技巧
  • 写查询语句出现的问题.显示查不到的数据出错,帮忙看看
  • 深入剖析SAS技术
  • linux命令--grep
  • 鞋为什么会臭?14个方法巧除鞋臭脚臭!
  • Linux下history命令用法15例-zt
  • 我的架构经验小结(四)-- 实战中演化的三层架构
  • 世卫专家评估甲型H1N1病毒大流行风险
  • Ruby之旅—Ruby解释器的安装
  • 我在Asp.net记录错误日志的代码
  • GRUB 安装使用
  • 生成建表脚本(V2.0)
  • EX07学习笔记之一:Exchange2007在Win2003上的安装
  • web developer tips (1):创建、管理、应用样式表的强大工具
  • 分享一款快速APP功能测试工具
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 0x05 Python数据分析,Anaconda八斩刀
  • Laravel 中的一个后期静态绑定
  • leetcode46 Permutation 排列组合
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • React-redux的原理以及使用
  • SpiderData 2019年2月13日 DApp数据排行榜
  • SpringBoot几种定时任务的实现方式
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 普通函数和构造函数的区别
  • 前端设计模式
  • 设计模式(12)迭代器模式(讲解+应用)
  • 原生Ajax
  • const的用法,特别是用在函数前面与后面的区别
  • Spring Batch JSON 支持
  • 交换综合实验一
  • 昨天1024程序员节,我故意写了个死循环~
  • ​力扣解法汇总946-验证栈序列
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #define 用法
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (十六)一篇文章学会Java的常用API
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (五)关系数据库标准语言SQL
  • (转)ABI是什么
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • ***详解账号泄露:全球约1亿用户已泄露
  • *Django中的Ajax 纯js的书写样式1
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .mysql secret在哪_MySQL如何使用索引
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .Net 应用中使用dot trace进行性能诊断
  • .NET开源快速、强大、免费的电子表格组件
  • /etc/fstab和/etc/mtab的区别
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @ComponentScan比较