use*_*961 0 javascript php jquery json codeigniter
我正在寻找如何完成下一个任务.我有一个控制器,用一个表列出我的数据库中的页面加载视图.在表格中的每一行中都有一个图标点,点击后会执行以下两种操作之一.
如果用户没有启用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
}
}
}
}
?>
Run Code Online (Sandbox Code Playgroud)
全局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');
});
Run Code Online (Sandbox Code Playgroud)
小智 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));
}
Run Code Online (Sandbox Code Playgroud)
因此,当用户启用了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');
Run Code Online (Sandbox Code Playgroud)
如果JS被禁用,请调用另一个函数.您应该使用AJAX专用控制器而不是同一类中的函数.