使用jquery和CI将数据从AJAX调用显示到数据库

时间:2014-01-08 19:33:16

标签: php jquery ajax codeigniter

该模型似乎与控制器一样有效。 AJAX将结果显示为“null”,因此我认为这是因为我们需要将数据作为json发送。有关如何将数据转换为正确格式并在视图中显示的任何想法

查看

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

 <div id='result_table' style="color:white;">
 hola amigo
 </div>

<script type='text/javascript' language='javascript'>
$('#getdata').click(function(){
                $.ajax({
                        url: '<?php echo base_url().'index.php/trial/getValues';?>',
                         type:'POST',
                         dataType: 'json',
                          error: function(){
                          $('#result_table').append('<p>goodbye world</p>');
                          },
                         success: function(results){

                          $('#result_table').append('<p>hello world</p>');

                          } // End of success function of ajax form
                          }); // End of ajax call

                });
</script>

控制器

function getValues(){
    $this->load->model('get_db');
    $data['results'] = $this->get_db->getAll();
    return $data;
}

模型

class Get_db extends CI_Model{
    function getAll(){
        $query=$this->db->query("SELECT * FROM questions");
        return $query->result();
        //returns from this string in the db, converts it into an array
    }   
}

3 个答案:

答案 0 :(得分:1)

在您的视图中,您将数据类型设置为json,因此您需要一个控制器来生成json输出。 codeIgniter有一个生成此类型的系统。您可以在控制器中使用此代码来执行此操作:

$this->load->model('get_db');
$data = $this->get_db->getAll();

$this->output->set_content_type('application/json');
$this->output->set_output(json_encode( $data ));

并在 ajax成功中获取您的回复并使用它:

success: function(response){
   server_res = JSON.parse(response);
   console.log(server_res);

   $('#result_table').append('<p>hello world</p>');
 }

答案 1 :(得分:0)

如果你想要html表单(不要返回),只需在控制器中打印/回显$data。如果你想要json,那么打印/ echo json_encode($array)

并成功ajax写

success: function(results){
     $('#result_table').append(results.arraykey);//arraykey=array key from controller
} // End 

答案 2 :(得分:0)

在控制器中只需使用此

function getValues(){
    $this->load->model('get_db');
    echo json_encode($this->get_db->getAll());
}

在视图中

success: function(results){
   results = JSON.parse(results);
   $('#result_table').append('<p>hello world</p>');
}