Hi,早上好,我是军哥,新的一天又开始啦,首先祝大家呢这一天的工作和学习顺顺利利,开开心心~~军哥今天想分享一下CI框架中有关Ajax的一个简单应用(详见代码示例代码示例 ),相信有许多的初学者对CI中怎样使用Ajax会比较纠结和迷茫,但又非常让你有兴趣,毕竟通过Ajax,你可以创建更好、更快以及更友好的WEB应用程序,谁不想自己写的程序足够友好呢,嘿嘿,更何况这是一个以用户为王的时代!
CI中有为我们提供封装好的Ajax类库,个人建议是尽量不使用,因为使用CI封装好的,你就得遵循它要求的格式去写,这样就更让初学者更加糊涂。
接下来就具体来讲这个AJAX简单应用——书籍列表页中当点击书籍名称时实现Ajax请求弹出书籍详情对话框的无刷新效果。还是跟上次一样,军哥还是在代码中继续使用bootstarp前端UI框架来实现页面效果。另外还用到了峰哥的独家秘笈——Ajax3.0。废话不说,还是老套路,直接上代码,欢迎拍砖赐教~~1、首先看效果,有图有真相,天凉好个秋;书籍列表页:弹出框效果:
2、控制器(源码在 application/controllers/manage文件夹);if (!defined('BASEPATH'))
- exit('No direct script access allowed');
- /**
- *书籍管理控制器,只实现书籍列表显示功能
- * @author jayjun
- * @copyright 2012.09.03
- */
- class book extends CI_Controller {
- // 初始化
- function __construct() {
- parent::__construct();
- $this->base_url = $this->config->item("base_url");
- $this->load->model('M_book');
- }
- //书籍列表页
- function index($num = '') {
- // 加载分页类
- $this->load->library('pagination');
- $config['base_url'] = $this->base_url.'/index.php/manage/book/index/';
- $config['total_rows'] = $this->M_book->count('back');
- $config['per_page'] = 2;
- $config['num_links'] = 3;
- $config['uri_segment'] = 4;
- $config['full_tag_open'] = '
- $config['full_tag_close'] = '';
- $config['first_link'] = '首页';
- $config['last_link'] = '末页';
- $config['next_link'] = '下一页 >';
- $config['prev_link'] = '< 上一页';
- $config['cur_tag_open'] = '
- $config['cur_tag_close'] = '';
- $this->pagination->initialize($config);
- $data['list'] = $this->M_book->get('back', $config['per_page'], $num);
- $data['page'] = array(
- 'total' => $config['total_rows'],
- 'num' => $config['per_page'],
- 'page' => (int) (($config['total_rows'] % $config['per_page'] === 0) ? ($config['total_rows'] / $config['per_page']) : ($config['total_rows'] / $config['per_page'] + 1)),
- 'c_num' => $num
- );
- $data['base_url'] = $this->base_url;
- $this->load->view("manage/book_index",$data);
- }
- //获取书籍详情
- function post() {
- $data['base_url'] = $this->base_url;
- $id = $this->input->post('id');
- $query = $this->M_book->post($id);
- $data['post'] = $query->row_array();
- $this->load->view('manage/book_info', $data);
- }
- }
3、模型(源码在 application/models文件夹)if (!defined('BASEPATH'))
- exit('No direct script access allowed');
- /**
- *书籍Model类
- * @author jayjun
- * @copyright 2012.09.03
- */
- class M_book extends CI_Model {
- //获取书籍信息
- function get($type,$num,$offset) {
- $data = '';
- switch ($type) {
- case 'back':
- $this->db->select('BookId,Tid,BookName,BookDesc,Price,MemberPrice,BookPic,Bstatus,Total,BuyNum,IsPush,IsHot,IsNew,AddTime,TagList');
- $data = $this->db->get('book', $num, $offset);
- break;
- }
- return $data;
- }
- // 获取书籍信息,$id
- function post($id) {
- return $query = $this->db->get_where('book', array('BookId' => $id));
- }
- // 统计书籍数量
- function count($type) {
- $data = '';
- switch ($type) {
- default:
- case 'back':
- $data = $this->db->count_all_results('book');
- break;
- }
- return $data;
- }
- }
4、视图(源码在 application/views/manage文件夹)书籍列表视图(book_index.php):- 书籍列表
书籍列表
每页 条 / 当前 ~ num_rows; ?> 条 / 计 页 / 共 条
- pagination->create_links(); ?>
- $(function(){
- //点击书籍名称触发事件
- $(".js_book").live('click',function(){
- var BookId = $(this).attr("id");
- //实例化Ajax类
- var ajax = new Ajax();
- ajax.post("",{id:BookId},function(data){
- $("#js_book").html(data);
- });
- });
- //点击书籍详细信息对话框中的关闭按钮所触发事件
- $('.js_bookClose').live('click',function(){
- $('#bookModal').hide();//点击关闭按钮触发隐藏事件
- });
- });
-
加载的弹出框视图(book_info.php):书籍名称: | | |
市场价: | ¥ |
会员价: | ¥ |
库存量: | 本 |
是否推荐: | |
是否热门: | |
是否最新: | |
书籍描述: | |
5、应用
(1)、先下载附件,解压之后,拷贝至网站根目录下;
(2)、找到文件ci_ajax.sql,建库建表;
(3)、修改配置文件CI_cate/application/config/database.php,只需设置$db['default']['password'] ='你的数据库密码'; ,大概在第10行;
(4)、浏览器输入即可访问书籍列表显示页啦,点击书籍名称即可弹出书籍详情对话框。
原文地址:
阅读(355) | 评论(0) | 转发(0) |