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>

ヘッダーとフッターは主に Web サイトの他のページへのリンクですが、ヘッダーと冒頭の関連セクションは次のとおりです。

<!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 は、サーバー上の最新の jquery ファイルを指す config/constants で宣言された変数です。これは、利用可能な最新の開発者バージョンです。

コントローラーメソッドの場合:

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をに追加します。HTMLはjson_encoding$output_stringになります。それは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 に答える