我正在寻找如何完成下一个任务。我有一个控制器,用一个表列出我的数据库中的页面加载视图。在表格中的每一行中都有一个图标点,点击后会执行以下两种操作之一。
如果用户未启用javascript:
如果用户确实启用了javascript:
我想知道的是如何正确适应这两种情况?我已经开始尝试这个了,但是如果我到目前为止犯了一个错误,我想澄清一下。
<?php
// Controller delete function
public function delete($content_page_id)
{
if (isset($content_page_id) && is_numeric($content_page_id))
{
$content_page_data = $this->content_page->get($content_page_id);
if (!empty($content_page_data))
{
//update is ran instead of delete to accompodate
//for the soft delete functionality
$this->content_page->update('status_id', 3);
if ($this->input->is_ajax_request())
{
//return json data array
}
}
}
}
?>
用于具有删除按钮的多个表的全局JS文件
/* Delete Item */
$('.delete').click(function(event) {
event.preventDefault();
var item_id = $(this).attr('rel');
$.post(<?php echo current_url(); ?>'delete', { item_id : item_id }, function(data)
{
if (data.success)
{
var anSelected = fnGetSelected( oTable );
oTable.fnDeleteRow( anSelected[0] );
}
}, 'json');
});
答案 0 :(得分:5)
我认为你应该在PHP中有两个函数:
public function delete($content_page_id) {
// Your delete code
return "a string without format";
}
public function deleteAjax($content_page_id) {
return json_encode($this->delete($content_page_id));
}
因此,当用户启用JS时,您调用deleteAjax在$ .post函数中传递一个参数,让PHP知道JS已启用:
$.post(<?php echo current_url(); ?>'delete', { item_id : item_id, js: 1 }, function(data)
{
if (data.success)
{
var anSelected = fnGetSelected( oTable );
oTable.fnDeleteRow( anSelected[0] );
}
}, 'json');
如果禁用JS,请调用其他函数。您应该使用AJAX专用控制器而不是同一类中的函数。
答案 1 :(得分:0)
1)就“显示消息”而言 - 视图本身可以为“消息”(如果存在)做好准备。让我们回到......
2)你有删除功能可以返回你想要显示的信息吗?当您的View将显示它时,您的AJAX方法将忽略此消息...
3)我同意你的'控制器删除功能'应该根据请求是否是AJAX“完成”不同的结果。我喜欢@Skaparate(8月30日18:37回答)添加:js:1
在你的删除功能中,你可以在一个简单的条件中使用它:
如果js = 1
标题('HTTP / 1.1 200');
否则
调用视图并包含/传入“消息”