我一直在努力解决在我的应用程序中动态打开的模式中检索某些数据的问题。
我在我的应用程序的后端使用codeIgniter,所以基本上我的控制器中有一个方法用于将数据发送到我的视图:
public function load_list() {
$this->load->model(array('my_model'));
$this->load->helper(array('my_helper'));
$this->lang->load(array('my_lang_file'));
$user = get_user();
$this->base_data['user'] = $user;
if (!$user['auth']) {
display_404($this->base_data);
return;
}
$id = $this->input->post('id');
$array_data = array();
$my_table_data = $this->table->get($id);
$array_data[0] = array(
'name' => $my_table_data->get_name(),
'content' => $my_table_data->get_content()
);
ksort($array_data);
$data = array(
'key' => $array_data
);
$this->base_data['my_data'] = $data;
$this->load->view('data_list', $this->base_data);
}
视图data_list
是包含不同值的复选框列表。
以下是我的观点代码示例:
<?php
$i=0;
foreach ($my_data['array_data'] as $index=>$data) {
echo '<div class="data-'.$data['name'].' col-md-12 list-group" '.(($i==0)? '':'style="display:none"').'>';
$i+=1;
foreach ($data['content']['element'] as $name=>$content) {
echo '<a class="list-group-item clearfix"><div class="col-md-offset-3 col-md-9"><input type="checkbox" id="'.$data['name'].'-element-'.$name.'" name="'.$data['name'].'-element" value="'.$name.'"><span> </span>';
echo '</a>';
}
if (count($data['content']['element']) == 0) echo '<br><em>'.lang('no_element').'</em>';
echo '</div>';
}
?>
我在JQuery中使用ajax请求加载此视图(单击按钮时触发):
$.post('/folder/controller/load_list', {
id: id
}, function(data) {
$('.modal-body').html(data);
// Here is the code to check the checkboxes already saved in my database
}
});
当您单击模式右下角的确认按钮时,由于其他Ajax请求并关闭模式,它会在数据库中保存元素。
问题是,当我再次打开我的模态时,即使我将它们存储在全局JS对象中,我的元素也不会被检查:
window.data = my_data;
我将它们保存在这个JS对象中,我将它们保存在我的数据库中。每当我打开我的模态时,我都会读取此对象的数据。 但不幸的是,每次我的模态再次打开时,复选框都不会被选中。 如果我重新加载页面,我的复选框就会被选中。
如何在不重新加载页面的情况下更新我的模态?
非常感谢你的帮助!