我正在尝试将Jquery日历插件与codeigniter数据库集成并传递Json数组,这将是错误,感谢您的帮助。
calendar.php在视图中
<script>
var unavailableDates = '<?php echo base_url() ?>Calr/getevent';
$('#calendar').availabilityCalendar(unavailableDates);
</script>
Controller Calr.php
public function getevent()
{
$this->load->model(user/Calr_model/SelectAll);
}
Model Calr_model.php
function SelectAll()
{
$sql = 'SELECT start_date,end_date,link FROM tbl_events';
$query = $this->db->query($sql);
// Fetch the result array from the result object and return it
return $query->result();
}
也在calr_model.php
中尝试过这个功能function SelectAll()
{
$sql = 'SELECT start_date,end_date,link FROM tbl_events';
$query = $this->db->query($sql);
// Fetch the result array from the result object and return it
return $query->result();
$emparray = array();
while($row =mysqli_fetch_assoc($query))
{
$emparray[] = $row;
}
echo json_encode($emparray);
}
但是json数组值不是从数据库中恢复的, 静态输入在视图中工作,如
calendar.php
<script>
var unavailableDates = [{start: '2015-08-31', end: '2015-09-05', title:'Event 1'} {start: '2015-09-11', end: '2015-09-15', title:'Event 2'},{start: '2015-09-15', end: '2015-09-23', title:'Event 3'},{start: '2015-10-01', end: '2015-10-07', title:'Event 4'}];
$('#calendar').availabilityCalendar(unavailableDates);
</script>
此致
Vinoth
答案 0 :(得分:0)
您应该更好地区分模型和控制器。模型永远不应回应任何东西。这是控制器的工作。
你的控制器:
public function getevent()
{
$this->load->model('Calr_model');
$data = $this->Calr_model->SelectAll();
echo json_encode($data);
}
您的模型(务必将字段重命名为正确的javascript名称,以后省去麻烦):
function SelectAll()
{
$sql = 'SELECT `start_date` AS `start`, `end_date` AS `end`, `link AS `title` FROM tbl_events';
$query = $this->db->query($sql);
return $query->result();
}
您可以在正常页面的页面加载时加载此模型方法。所以你不需要另外一个控制器。如果您使用AJAX通过正常的Ajax调用来检索数据,并且在成功时使用
将事件添加到日历中$.ajax({url: "/Calr/getevent/", success: function(result){
$('#calendar').availabilityCalendar(result);
}});
请注意,通常日历在日历完成加载时会有一个事件。使用该事件通过上面的Ajax函数检索数据,否则可能无法正常工作。