使用ajax codeigniter从数据库中获取数据

时间:2017-06-28 09:29:39

标签: php jquery ajax codeigniter

在单击按钮后的代码中它应该从数据库中获取数据并使用jquery和ajax在相应的div中动态显示它但是我没有得到任何输出,下面是我的代码:

控制器

defined('BASEPATH') OR exit('No direct script access allowed');

class Afcks extends CI_Controller 
{
public function __construct()
{
    parent::__construct();
    $this->load->model('afcks_search','am');        
}
function index()
{
    $this->load->view('afcks_home');
}
function search_course()
 {
        $result=$this->am->search_course();
        echo json_encode($result);
 }
}

模型

 class Afcks_search extends CI_Model
 {
    function search_course()
    {
        $query=$this->db->query("SELECT course_name FROM courses");
        return $query->result();
     }
}

查看

 <head>
  <script>
 $(document).ready(function(){
        $("button").click(function(){

            $.ajax({
                url:"<?php echo base_url(); ?>/afcks/search_course";
                type:"POST",
                dataType:"json",
                data:req,
                success:
                function(data)
                {
                    var str='';'
                    str+='<ul>';
                    for(var i = 0; i< data.length; i++)
                    {
                        str+='<li>'+data.course+'</li>';
                    });
                    str+='</ul>';
                    $('#course').html(str);
                }
            });
        });
    });
    </script>  
 </head>
 <body> 
<button> click me </button>
<div id="course"> </div>
</body>

4 个答案:

答案 0 :(得分:1)

您正在从ajax请求错误的网址。在您的控制器中,方法名称为search_course因此请将ajax url更改为:

url:"<?php echo base_url(); ?>/afcks/search_course";

在将结果检索到obj

时,同时将data更改为data
for(var i = 0; i< data.length; i++)
{
      str+='<li>'+data.course_name+'</li>'; //<----change here
 });

答案 1 :(得分:0)

请复制我的代码,也尝试更改基本网址和json数据转换

<head>
  <script>
 $(document).ready(function(){
        $("button").click(function(){
                 var base=<?php echo base_url(); ?>;
            $.ajax({

                url:base+"/afcks/search_course";//also try "<?php echo base_url(); ?>/afcks/search_course" i dont think it's correct.
                type:"POST",
                dataType:"json",
                data:req,
                success:
                function(data)
                {
                   var responseData = $.parseJSON(data);//convert string to json, i know you datatype is set to 'json' still want to cross check. 
                    var str='';
                    str+='<ul>';
                    $(function() {
                        $.each(responseData, function(i, item) {
                             str+='<li>'+item.course_name+'</li>';
                        });
                    })
                    str+='</ul>';
                    $('#course').html(str);
                }
            });
        });
    });
    </script>  
 </head>
 <body> 
<button> click me </button>
<div id="course"> </div>
</body>

希望这会奏效!

答案 2 :(得分:0)

更改

url:"<?php echo base_url(); ?>/afcks/course";

url:"<?php echo base_url(); ?>afcks/search_course";

var str='';'
str+='<ul>';

var str='<ul>';

for(var i = 0; i< data.length; i++)
{
    str+='<li>'+data.course+'</li>';
});

$.each(data,function()
{
    str+='<li>'+this.course_name+'</li>';
}

并删除

data:req,

答案 3 :(得分:0)

>尝试使用此代码

    success: function (data) 
    {
        if (data == false) {

            $('#course').append('<div>No Record Found</div>');

        }
        else
        {
            var str='';

            str+='<ul>';

            $.each(data, function (i, item) {

                str+='<li>'+item.course_name+'</li>';

            });

            str+='</ul>';

            $('#course').html(str);

        }
    }