php - 对php请求的post jquery请求使用一个删除函数

标签 php javascript jquery json codeigniter

我正在寻找如何完成下一个任务。我有一个 Controller ,它加载一个 View ,其中包含一个列出数据库中页面的表。在表格中的每一行中都有一个图标,单击该图标将执行以下两项操作之一。

如果用户没有启用 JavaScript:

  • 点击图标将重定向到 Controller 中的删除功能,并以页面 id 作为参数
  • 删除 Controller 功能将在模型中运行删除功能,发送页面 ID 来删除模型功能
  • 模型中的删除函数将从数据库中删除页面,当返回到页面 Controller 删除函数时,它将重定向回索引函数以再次显示页面列表表。
  • 重定向后,它将显示标题和成功/失败消息。

如果用户确实启用了 JavaScript:

  • 使用 jquery post 将帖子发送到 Controller 中的删除功能 带有数据页id的方法
  • 删除 Controller 功能将在模型中运行删除功能,发送页面 ID 来删除模型功能
  • 模型中的删除函数将从数据库中删除页面,当返回到页面 Controller 删除函数时,它会为 json 对象创建一个消息数组,以返回到 post 请求的成功函数。
  • 使用我的 pnotify 插件的消息将创建一条由该 json 对象形成的消息并将其显示给用户

我想知道这样做如何正确适应这两种情况?我已经开始尝试这样做,但如果到目前为止我犯了一个错误,希望得到一些澄清。

<?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');
});

最佳答案

我认为 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 时,您可以在 $.post 函数中传递一个参数来调用 deleteAjax,让 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 专用 Controller 而不是同一类中的函数。

关于php - 对php请求的post jquery请求使用一个删除函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18539108/

相关文章:

php - Ajax不调用回调函数

php - 带有 mysql 的 while 循环中的 if 语句永远不会是真的 PHP

javascript - 如何制作船舶动画

jquery - 使用 Jquery Datepicker 获取日期

javascript - 对于某些 HTML 内容,点击事件在 Safari Mobile 中不起作用

php - 如何通过 Mac 的终端将公共(public) ssh key 添加到我的 DigitalOcean Droplet?

php - MySQL 忽略不起作用

javascript - 使用 MSE 将低延迟 avc/h264 视频流式传输到浏览器

javascript - 如何使用 Firebase 云函数更新 Firestore 文档的值

javascript - 调整浏览器大小时停止 div 移动