我想在我的codeigniter应用程序中实现AJAX,但我对如何将数据返回到视图一无所知。我也不确定我是否以正确的方式执行控制器。但是,当我收到下面的消息时,AJAX调用是成功的
XHR finished loading:
$.ajax({
type: "post",
cache:true,
url: "<?php echo site_url('getrates/index'); ?>",
}).done(function() {
$("#ajax-message").html("Success");
});
这是控制器
class Getrates extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->model('getrates');
}
public function index()
{
$username = $sess_array['username'];
$data['rates'] = $this->getrates->index($username);
$this->load->view('dashboard', $data['rates']);
}
}
和模型
class Rates extends CI_Model {
public function __construct()
{
parent::__construct();
}
function index($user) {
$username = $user;
$sql = "SELECT * FROM tarrifs WHERE username = ? ";
$rates = $this->db->query($sql, array(1, $username));
return $rates;
}
}
答案 0 :(得分:0)
请在消息部分输入ajax响应,试试这种方式
$.ajax({
type: "post",
cache:true,
url: "<?php echo site_url('getrates/index'); ?>",
}).done(function(data) {
$("#ajax-message").html(data);
});
在模型中
function index($user) {
$username = $user;
$sql = "SELECT * FROM tarrifs WHERE username = {$username} ";
$rates = $this->db->query($sql);
return $rates->row_array(); // return single row in array
}
控制器请尝试这种方式
public function index()
{
$username = $sess_array['username'];
$data['rates'] = $this->getrates->index($username);
// true parameter return view data
echo $this->load->view('dashboard', $data['rates'], true);
die();
}
答案 1 :(得分:0)
我猜测$ .ajax没有检索到来自你的控制器的任何数据,也许是因为它指向了错误的网址,也许你应该用它替换它:
url: "<?php echo site_url('getrates'); ?>
引用codeigniter controllers works的方式,而不是在该控制器中加载视图,而是尝试回显从模型接收的值,因此$ .ajax不会检索控制器呈现的整个视图,即:
$username = $sess_array['username'];
$data['rates'] = $this->getrates->index($username);
echo json_encode($data['rates']) or return json_encode($data['rates'])
哪一个最适合您,然后更改某个页面中存在的占位符的ID,然后加载该控制器而不是您现在加载的控制器:
$("#a-different-page").html(data);
至于你的模型,我不确定将模型函数命名为“index”是否不正确,但我建议用更合适的函数命名,如函数model_genrates(){}
希望它有所帮助,欢呼!