我正在努力实现相对简单的目标 - 允许用户在视图页面上发表评论,更新数据库并在页面上动态显示新内容,而不会刷新整个页面。
到目前为止我的努力都没有成功 - 我正在做的事情可能有几个问题!
在视图页面上,我试过这个(将2个变量发送到CI控制器函数):
<script type="text/javascript">
function ajax(id, user_id) {
jQuery('#dynamicdiv').load('/controller/function/' + id + '/' + user_id);
}
</script>
<div id='dynamicdiv'>
</div>
我有一个textarea收集用户注释,在控制器功能中我应该能够将其作为发布数据调用以便将其写入数据库吗?如果是这样,我仍然需要向ajax函数发送另外两个变量($ id和$ user_id)。
<?php $atts = array (
'class' => "alignright button",
'onClick' => "ajax('$id,$user_id')",
); ?>
<?php echo anchor(current_url(), 'Post my Comment', $atts); ?>
并且在控制器中,涉及与我希望用户保持的页面不同的功能(视图):
$data = $this->model->database_query($id, $user_id);
echo $data; // from reading other posts it seems I would process the data within this function, to have it displayed on the page the user is viewing?
任何帮助表示赞赏!
答案 0 :(得分:1)
不要忘记阻止默认锚定行为(例如,将return false;
添加到onclick
参数中)。
<?php $atts = array (
'class' => "alignright button",
'onClick' => "ajax('$id,$user_id'); return false;",
); ?>
答案 1 :(得分:0)
你可以按如下方式发出ajax请求:
function ajax(id, user_id) {
$.ajax({
url: base_url + controller_name + '/' + action_name,
type: 'GET',
data: { id: id, user_id: user_id },
dataType: 'json',
success: function (data) {
// append the returned result to your #dynamicdiv
}
});
}
并在控制器中:
$id = $this->input->get('id');
$user_id = $this->input->get('user_id');
$data = $this->model->database_query($id, $user_id);
echo json_encode($data);
希望这有帮助