Reputation: 73
In this code after clicking on button it should fetch the data from database and display it dynamically within appropriate div using jquery and ajax but i am not getting any output, below is my code:
controller
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);
}
}
model
class Afcks_search extends CI_Model
{
function search_course()
{
$query=$this->db->query("SELECT course_name FROM courses");
return $query->result();
}
}
view
<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>
Upvotes: 1
Views: 5951
Reputation: 134
please copy my code, also try to change base url and json data conversion
<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>
hope this will work !
Upvotes: 0
Reputation: 302
Change
url:"<?php echo base_url(); ?>/afcks/course";
to
url:"<?php echo base_url(); ?>afcks/search_course";
and
var str='';'
str+='<ul>';
to
var str='<ul>';
And
for(var i = 0; i< data.length; i++)
{
str+='<li>'+data.course+'</li>';
});
to
$.each(data,function()
{
str+='<li>'+this.course_name+'</li>';
}
And remove
data:req,
Upvotes: 0
Reputation: 16436
You are requesting wrong url from ajax. In your controller method name is search_course
So change you ajax url to:
url:"<?php echo base_url(); ?>/afcks/search_course";
Also change obj
to data
as you are retrieving result into data
for(var i = 0; i< data.length; i++)
{
str+='<li>'+data.course_name+'</li>'; //<----change here
});
Upvotes: 1