我是Codeigniter的初学者。这将是我第一次使用Ajax。单击导航链接时,我只想更改“内容”部分。我需要学习如何在我的网站中使用ajax。
MY_Controller.php:
class MY_Controller extends CI_Controller {
protected $data = array();
function __construct() {
parent::__construct();
}
function render_page($view) {
if( ! $this->input->is_ajax_request() )
{
//do this to don't repeat in all controllers...
$this->load->view('templates/header', $this->data);
//menu_data must contain the structure of the menu...
//you can populate it from database or helper
}
$this->load->view($view, $this->data);
if( ! $this->input->is_ajax_request() )
{
$this->load->view('templates/menu');
$this->load->view('templates/footer', $this->data);
}
}
我的家/关于控制器查看功能:
public function view($page = 'home')
{
$this->load->helper('text');
$this->data['records']= $this->services_model->getAll();
if ( ! file_exists('application/views/pages/'.$page.'.php'))
{
// Whoops, we don't have a page for that!
show_404();
}
$data['title'] = ucfirst($page); // Capitalize the first letter
$this->render_page('pages/'.$page,$data);
}
我想,我可以在MY_Controller.php中启用ajax。这之后该怎么办?我如何在视图中启用帖子?
编辑:我对jquery和ajax进行了更多的研究。 这是html的导航菜单部分:
<div id="sidebar-content">
<ul id="menu">
<li class="current"><a href="<?php echo site_url('home'); ?>">ANASAYFA</a></li>
<li><a href="<?php echo site_url('about'); ?>">HAKKIMIZDA</a></li>
......
我在head部分编写了ajax.js文件:
//导航
$("#sidebar-content ul li a").click( function(){
$.ajax({
url: "<?php echo site_url('about'); ?>",
type: 'POST';
data: JSON,
success: function(msg) {
$('#content').body(msg);
}
});
});
return false;
});
你能改进我的代码吗?还有一个问题是:如果我在头部使用ajax,我如何将不同的页面作为网址发布?
答案 0 :(得分:0)
你的问题有点模棱两可,但这里有一些我可以用你的JQuery看到的问题:
您已在JQuery中设置data: Json
,但它看起来像你
返回HTML,因此将其更改为HTML。
type: post
之后你有一个半冒号,它应该只是一个
逗号
网址指向控制器,而不是方法。将其更改为"<?php echo site_url('about/view'); ?>",
没有JQuery .body()
,你想要.html()
或成功函数的完整行:$('#content').html(msg);
。 Obviosult确保你有一个名为id =“content”的元素.JQuery将用来自服务器的响应替换它,这应该是从你的控制器返回的纯html。您可以使用codeigniters $ this-&gt; load-&gt; view()来返回正确的文件。
其他说明 - 您似乎需要阅读JQuery,尤其是ajax function
以下是关于将Ajax与CI一起使用的好教程 - http://net.tutsplus.com/tutorials/php/codeigniter-from-scratch-day-8-ajax/
最后,使用Chrome开发者工具网络检查器中的控制台和网络功能,或者以这种方式获取Firebug for Firefox,您可以看到js错误并监控ajax请求(XHR)