|
今天看了人家写的一个ci与ajax交互的例子,自己也动手写了下下,感觉ci写的东西很清晰,model和controller都分开了,符合面向对象的写法。
1、首先创建数据库:
SQL复制代码
CREATE TABLE `area` (
`id` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` CHAR(255) NOT NULL,
`level` tinyint(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT '级别',
`upid` mediumint(8) UNSIGNED NOT NULL DEFAULT '0' COMMENT '从属于',
`list` SMALLINT(6) NOT NULL DEFAULT '0' COMMENT '排序',
PRIMARY KEY (`id`),
KEY `upid` (`upid`,`list`)
) ;
INSERT INTO `area` VALUES (1, '北京市', 1, 0, 0);
INSERT INTO `area` VALUES (2, '天津市', 1, 0, 0);
INSERT INTO `area` VALUES (3, '河北省', 1, 0, 0);
INSERT INTO `area` VALUES (4, '石家庄市', 2, 3, 0);
INSERT INTO `area` VALUES (5, '唐山市', 2, 3, 0);
INSERT INTO `area` VALUES (6, '秦皇岛市', 2, 3, 0);
INSERT INTO `area` VALUES (7, '邯郸市', 2, 3, 0);
INSERT INTO `area` VALUES (8, '福建省', 1, 0, 0);
INSERT INTO `area` VALUES (9, '福州市', 2, 8, 0);
INSERT INTO `area` VALUES (10, '厦门市', 2, 8, 0);
INSERT INTO `area` VALUES (11, '莆田市', 2, 8, 0);
INSERT INTO `area` VALUES (12, '思明区', 3, 10, 0);
INSERT INTO `area` VALUES (13, '湖里区', 3, 10, 0);
INSERT INTO `area` VALUES (14, '荔城区', 3, 11, 0);
INSERT INTO `area` VALUES (15, '秀屿区', 3, 11, 0);
INSERT INTO `area` VALUES (16, '东城区', 2, 1, 0);
INSERT INTO `area` VALUES (17, '西城区', 2, 1, 0);
复制代码
2、创建model类,area_model.php
PHP复制代码
<?php
class Area_model extends CI_Model {
function __construct ()
{
parent ::__construct ();
$this->load->database();
}
function get ($type,$upid = 0)
{
$data = '';
switch($type)
{
case 'province':
$this->db->select('id,name,level,upid,list');
$data = $this->db->get_where('area',array('upid'=>0));
break;
case 'city':
$this->db->select('id,name,level,upid,list');
$data = $this->db->get_where('area',array('upid'=>$upid));
break;
}
return $data;
}
}
复制代码
3、创建控制器,area_controller.php
PHP复制代码
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Area_controller extends CI_Controller {
function __construct (){
parent ::__construct ();
$this->load->helper(array('url','form'));
$this->load->model('Area_model');
}
public function index ()
{
$data['province'] = $this->Area_model->get('province');
$data['city'] = $this->Area_model->get('city',1); //地市默认的父id为1
$this->load->view('area_index',$data);
}
function select ()
{
$upid = $this->input->get('upid');
if($upid != '')
{
$data['city'] = $this->Area_model->get('city',$upid);
$this->load->view("area_select",$data);
}
}
}
/* End of file area_controller.php */
/* Location: ./application/controllers/area_controller.php */
复制代码
4、创建view视图,area_index.php 和 area_select.php
4.1 首先创建area_index.php
PHP复制代码
<!DOCTYPE html>
<html>
<head>
<title>省市级联操作</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src=" <?php echo base_url ('public/js/jquery-1.7.1.min.js')?>"></script>
</head>
<body>
省份:
<select name="pid">
<option value="">=请选择省份=</option>
<?php
foreach($province->result() as $item):
?>
<option value=" <?php echo $item->id;?>">
<?php echo $item->name; ?>
</option>
<?php endforeach;?>
</select>
地市:
<select name="cid">
<option value="">=请选择地市=</option>
<?php
foreach($city->result() as $item):
?>
<option value=" <?php echo $item->id;?>">
<?php echo $item->name ?>
</option>
<?php endforeach;?>
</select>
</body>
<html>
<script type="text/javascript" charset="utf-8">
$(function(){
$("select[name='pid']").change( function() {
/* $("select[name='pid'] option:selected").each(function(){
alert($(this).text());
});*/
$.get(" <?php echo site_url ('area_controller/select')?>", { upid ![](static/image/smiley/default/shy.gif) (this).val() },
function(data){
$("select[name='cid'] option:gt(0)").remove();
$("select[name='cid']").append(data);
});
});
});
</script>
复制代码
4.2 创建area_select.php
PHP复制代码
<?php
foreach($city->result() as $item):
?>
<option value="<?php echo $item->id;?>">
<?php echo $item->name ?>
</option>
<?php endforeach;?>
复制代码
5、效果如下
就是这样了,感觉听简单的
|
评分
-
查看全部评分
|