使用javascript函数加载视图

时间:2015-05-02 22:52:46

标签: javascript jquery codeigniter model-view-controller controller

我尝试使用this.id通过JavaScript将视图加载到我的div #teste中但没有成功。我的职能有什么不对?

下面的JavaScript函数

<script type="text/javascript">

var baseurl = '<?php site_url(); ?>'; //raiz do website

function navbutton(id) {

    $.ajax({
        type: 'GET',
        url: baseurl+'main/'+id,
        dataType: 'html',
        success: function(html) {
            $('#teste').html(html);
        }
    });
    }

HTML按钮

<li><a href="javascript:void(0)" id="contato" onclick="navbutton(this.id)">Contato</a></li>

我的主控制器(一个调用所有其他视图的功能)

class Main extends CI_Controller {

var $_data = array();

public function index()
{
    if (!$this->uri->segment(1) && !$this->uri->segment(2)) {
        $view = 'inicio';
    }
    if ($this->uri->segment(1) && !$this->uri->segment(2)) {
        $view = $this->uri->segment(1, 'inicio');
    }
    if ($this->uri->segment(1) && $this->uri->segment(2)) {
        $view = $this->uri->segment(1, 'inicio') . '/' . $this->uri->segment(2, '');
    }
    if (!file_exists(APPPATH . 'views/' . $view . EXT)) {
        $view = "404";
        header("HTTP/1.0 404 Not Found");
    }

    $this->load->view('templates/header');
    $this->load->view($view, $this->_data);
    $this->load->view('templates/footer');

}

2 个答案:

答案 0 :(得分:1)

避免得到未捕获的ReferenceError:未定义导航按钮&#39;错误 使用javascript附加点击事件功能:

var baseurl = '<?php site_url(); ?>'; //raiz do website
function navbutton(id) {
    $.ajax({
        type: 'GET',
        url: baseurl+'main/'+id,
        dataType: 'html',
        success: function(html) {
            $('#teste').html(html);
        },
        error:function(v1,v2,v3){
            alert('Something went wrong'); }
    });
}

$("#contato").on('click',function(event){
    event.preventDefault();
    navbutton(this.id);
});

HTML 上使用

<li><a href="#" id="contato">Contato</a></li>

JSFIDLE test - 在此示例中,ajax请求将收到错误404,因为url未正确定义,但代码必须正常工作。

提示以确保所有代码都在正确的位置,在浏览器中加载后查看页面的源代码(CTRL + U)

答案 1 :(得分:0)

您是否尝试将字符串加载到元素?在这种情况下,您需要在加载视图方法时传递第三个参数TRUE。

$view = $this->load->view('templates/header', '', TRUE);
$view .= $this->load->view($view, $this->_data, TRUE);
$view .= $this->load->view('templates/footer', '', TRUE);
echo $view;

签入docs here