Php ajax根据用户选择的输入排序数据

时间:2014-12-13 12:01:50

标签: javascript php html mysql ajax

我有一个html表单,用户可以在其中选择应该向php控制器发出ajax调用的选项。

<form action="<?php echo URL . 'task/show_list/' . $this->tasks[0]->list_id;?>" method="GET" id="#sortTaks">
            <select name="sort_task" id="selectSortTask">
                <option value="" selected="selected">Sort by:</option>
                <option value="byName">Name</option>
                <option value="byDeadline">Deadline</option>
                <option value="byPriority">Priority</option>
                <option value="byStatus">Status</option>
            </select>
            <input type="submit" value="Submit">
</form>

现在,我希望与ajax异步提供的排序功能。这是相应的php代码:

//controller

public function show_list($list_id)
    {
        if (isset($list_id)) {

            $task_model = $this->loadModel('TaskModel');
            $check      = $task_model->checkUserPermission($list_id);

            if ($check) {
                $tasks             = $task_model->showTasks($list_id);
                $this->view->tasks = $tasks;
                $this->view->render('task/task');
            } else {

                header('location:' . URL . 'dashboard/index');
            }
        } else {
            header('location:' . URL . 'dashboard/index');
        }
    }


//model

    public function showTasks($list_id)
    {

            if (isset($_GET['sort_task']) and !empty($_GET['sort_task'])) {
                $sort_parameter = strip_tags($_GET['sort_task']);
                $sort_order     = $this->sortData($sort_parameter);
                $sort_order     = 't.task' . $sort_order;
            } else {
                $sort_order = 't.task_name';
            }

            $sql = "SELECT t.task_name, t.task_id, t.task_priority, t.task_deadline, t.task_completed, l.list_id
                    FROM task AS t
                    LEFT JOIN list AS l ON l.list_id = :list_id AND l.list_id = t.list_id
                    WHERE l.user_id = :user_id
                    ORDER BY $sort_order";
            $query = $this->db->prepare($sql);
            $query->execute(array(':list_id' => $list_id, ':user_id' => $_SESSION['user_id']));

            return $query->fetchAll();

    }

//查看摘录

            echo '<td>' . $value->task_name . '</td><td>' . $priority . '</td><td>';
            echo $task_deadline->format('l jS \of F Y h:i:s A');
            echo '</td><td>';
            echo $overdue_until->format('%R %a day/s, %h hours, %i minutes');
            echo '</td><td>' . $status . '</td>';
            echo '<td><a href="' . URL . 'task/edit_task/' . $value->list_id . '/' . $value->task_id . '">Edit</td>';
            echo '<td><a href="' . URL . 'task/delete_task/' . $value->list_id . '/' . $value->task_id . '">Delete</td>';
            echo '<td><a href="' . URL . 'task/completed/' . $value->list_id . '/' . $value->task_id . '">Completed</td>';
            echo '</tr>';

解决此问题的最佳方法是什么?我对ajax调用应该如何看待mvc结构并将排序数据呈现给用户有点困惑。

非常感谢任何帮助。

现在我有了这个:

$(document).ready(function(){

      $('#selectSortTask').change(function(e){

        e.preventDefault();

        var sortParam = $('#selectSortTask').val();

         $.ajax({
             url: $(this).attr('action'),
             type: "GET",
             data: {sort_task: sortParam},
             dataType: 'json',
             success: function(data){
                alert(data);
             },
             error: function(error){
                alert(error);
             }
        });
    return false;
  });

});

警告对象将对象视为错误。如何修改此ajax调用和模型/视图/控制器以获得所需的结果?警报仅用于调试目的。

0 个答案:

没有答案