在同一 ajax 调用中更新和获取数据

Update and get the data in the same ajax call

本文关键字:更新 获取 数据 调用 ajax      更新时间:2023-09-26

我正在尝试从ajax调用中的数据库一次更新和获取更新的行

就绪函数中的 JS

$("button[name='teacher_lock_exam']").on(ace.click_event, function () {
    var current_exams_id = $(this).attr('id');
    bootbox.confirm("Are you sure you want to lock the exam? <br/><br/>" +
        "Locked exam cannot be modified until exam committee unlock it.", function (result) {
        if (result) {
            lock_exam(current_exams_id);
            bootbox.alert("Your Exam has been Locked !<br/><br/> Contact with Exam committee to modify that exam again.");
        }
    });
});
function lock_exam(current_exams_id) {
    $.ajax({
        url: "teacher_internal_exam_management/lock_exam/" + current_exams_id,
        type: "POST",
        dataType: "json",
        success: function (row) {
            alert('success');
            alert(row[0].access_status);

        }
    });

}

我的teacher_internal_exam_management控制器

public function lock_exam($current_exams_id)
{
    $this->load->model('teacher_internal_exam_management_model');
    $this->teacher_internal_exam_management_model->lock_exam($current_exams_id);
    echo (json_encode($this->teacher_internal_exam_management_model->get_exam_details($current_exams_id)));
}

我的teacher_internal_exam_management_model模型

function lock_exam($current_exam_id, $data)
    {
        $this->db->query("update current_exams set access_status = 'locked' where current_exams_id='".$current_exam_id."'");
    }
function get_exam_details($exam_id)
    {
        $query = $this->db->query("select * from  current_exams
                                where
                                    current_exams_id = '" . $exam_id . "'
                            ");
        return $query->result();
    }

现在,ajax 调用正在更新数据,但控制器中的回显不会返回该行。意味着 ajax 的成功函数没有运行。为什么这不起作用?代码有问题吗?

模型的最后一行:

return $query->result();

http://ellislab.com/codeigniter/user-guide/database/results.html

This function returns the query result as an array of objects, or an empty array on failure.

这将返回一个对象数组

您必须适当地转换它 -

return $query->result_array();

根据 http://www.php.net/manual/en/class.mysqli-result.php 年的 php 手册,我没有看到类型 mysqli_result 的 result(( 方法。我认为你需要使用

return $query->fetch_all();

而不是

return $query->result();