0

我在这里学习教程:http: //www.jotorres.com/2012/01/using-jquery-and-ajax-with-codeigniter/

在我看来,我有:

<script type="text/javascript" src="<?php echo jquery ?>"></script>

<button type="button" name="getdata" id="getdata">Get Data.</button>

<div id="result_table">

</div>

<script type="text/javascript" language="javascript">
$('#getdata').click(function(){

    $.ajax({
            url: "<?php echo base_url().'users/get_all_users';?>",
            type:'POST',
            dataType: 'json',
            success: function(output_string){
                    $("#result_table").append(output_string);
                } // End of success function of ajax form
            }); // End of ajax call
     });
</script>

页眉和页脚主要是指向网站上其他页面的链接,但页眉和开头的相关部分是:

<!DOCTYPE html>
<!-- Website template by Jeremiah Tantongco, jtantongco@gmail.com -->
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title><?php echo $title ?> </title>
        <link rel="stylesheet" href="<?php echo template ?>" type="text/css" />
        <link rel="stylesheet" href="<?php echo display_elements ?>" type="text/css" />
    </head>

注意:template 和 display_elements 是指向在 config/constants 中声明的服务器上某处的 css 文件的变量

注意:jquery 是在 config/constants 中声明的变量,它指向服务器上最新的 jquery 文件。它是可用的最新开发人员版本。

对于控制器方法:

public function test(){
    $this->renderTemp_noData('users/test', 'Test page');
}

public function get_all_users(){
    $query = $this->db->get('users');

    if($query->num_rows > 0){
        $header = false;
        $output_string = "";
        $output_string .=  "<table border='1'>\n";
        foreach ($query->result() as $row){
            $output_string .= "<tr>\n";
            $output_string .= "<th>{" . $row->uid ."}</th>\n";
            $output_string .= "</tr>\n";
        }
        $output_string .= "</table>\n";

    }
    else{
        $output_string = "There are no results";
    }
    //echo $output_string;
    echo json_encode($output_string);
}

public function renderTemp_noData($page, $title) {
    $data['title'] = $title;
    $accountType = $this->session->userdata('aid');

    switch ($accountType) {
        case 0: 
            $this->load->view('templates/LI_header', $data);
            $this->load->view($page);
            $this->load->view('templates/LI_footer');
            break;
        case 1: 
            $this->load->view('templates/LI_header_role1',$data);
            $this->load->view($page);
            $this->load->view('templates/LI_footer_role1');
            break;          
        case 2: 
            $this->load->view('templates/LI_header_role2',$data);
            $this->load->view($page);
            $this->load->view('templates/LI_footer_role2');
            break;
        case 3: 
            $this->load->view('templates/LI_header_role3',$data);
            $this->load->view($page);
            $this->load->view('templates/LI_footer_role3');
            break;
        default:
            redirect('/sessions/log_in/','refresh');
    }
}

当我使用“获取数据”按钮进入页面时,按下它并没有任何反应。因此,如果有人知道如何公开错误消息,那就太好了。此外,当我测试查看 get_all_users 的输出时,我得到的是:

"<table border='1'>\n<tr>\n<th>{1}<\/th>\n<\/tr>\n<tr>\n<th>{2}<\/th>\n<\/tr>\n<tr>\n<th>{3}<\/th>\n<\/tr>\n<tr>\n<th>{4}<\/th>\n<\/tr>\n<tr>\n<th>{5}<\/th>\n<\/tr>\n<tr>\n<th>{6}<\/th>\n<\/tr>\n<tr>\n<th>{7}<\/th>\n<\/tr>\n<tr>\n<th>{8}<\/th>\n<\/tr>\n<tr>\n<th>{9}<\/th>\n<\/tr>\n<tr>\n<th>{10}<\/th>\n<\/tr>\n<tr>\n<th>{12}<\/th>\n<\/tr>\n<tr>\n<th>{13}<\/th>\n<\/tr>\n<tr>\n<th>{14}<\/th>\n<\/tr>\n<tr>\n<th>{15}<\/th>\n<\/tr>\n<tr>\n<th>{16}<\/th>\n<\/tr>\n<tr>\n<th>{17}<\/th>\n<\/tr>\n<tr>\n<th>{18}<\/th>\n<\/tr>\n<\/table>\n"

JSON应该是这样的吗?我的直觉说不,但这是我第一次使用 JSON、Jquery 和 AJAX。此外,数值是正确的。查看我的数据库,只有 UID 1-18,没有 11。

4

1 回答 1

2

您的get_all_users()函数将 HTML 添加到您的$output_string中,然后您就是 json_encoding。JSON 的工作方式并非如此。用。。。来代替:

public function get_all_users() {
    $this->output->set_content_type('text/javascript; charset=UTF-8');

    $query = $this->db->get('users');
    echo json_encode($query->result());
}

也就是说,您的数据库调用应该存在于模型中,而不是您的控制器中。

于 2012-05-03T23:43:51.340 回答