使用CodeIgniter和jQuery进行简单的AJAX查询

时间:2013-01-15 11:53:42

标签: ajax codeigniter jquery preventdefault

我只是试图将一个名为“Load-about.php”的页面中的div从AJAX拉到我的主页面。 我一直在关注tutsnet课程“30天学习jQuery”,但是当我正在使用CI并且我正在尝试调整这些课程时,我很难从其他页面加载内容。

所以我有我的主页:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Load</title>
    <link rel="stylesheet" href="<?php echo base_url('bootstrap/css/bootstrap.min.css'); ?>" >

    <style>
    </style>
</head>
<body>

    <a href="<?php echo site_url('Ajax/lessonTwentyThree/Load-about'); ?>">Try to make AJAX working !</a>
    </br>
    <a href="<?php echo site_url('Ajax/lessonTwentyThree/Load-Contact'); ?>">Contact</a>

    <div class="wrap"></div>

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script>
(function() {
    var wrap = $('div.wrap');

    $('a').on('click', function(e) {
        var href = $(this).attr('href');
        wrap.load(href +'.container' ) ;
         e.preventDefault();
    });

})();

    </script>
</body>
</html>

我只是调用一个非常简单的CI控制器,它只调用询问的视图 在没有链接的情况下工作时一切都很好。

但现在,我被重定向到页面而不是使用AJAX调用。为什么?为什么 e.preventDefault(); 要么 返回false; 是不是阻止链接到默认操作?

由于

编辑:感谢Jai,我发现了我的错误,一个简单的昏迷。 但是,现在,我得到“GET http://www.localhost.com/CodeIgniterJQUERY/index.php/Ajax/lessonTwentyThree/Load-Contact.container 500(内部服务器错误)”

问题来自.container,因为我想指定类,Ci理解它,因为它是一个参数。

这是控制器:

类Ajax扩展了CI_Controller {

    /**
     * Nous allons ici nous occuper de toutes les fcts AJAX
     */

    public function lessonTwentyThree($page)
    { // En fait, on a pas besoin de ca, on va directement loader la vue directement.
        $this->load->view($page);
    }

}

我只想从Load-Contact获取一个div到主页面。

3 个答案:

答案 0 :(得分:2)

你必须将其移动:

(function($) {
    var wrap = $('div.wrap');

    $('a').on('click', function(e) {
       e.preventDefault(); 
       var href = $(this).attr('href');
       wrap.load(href +'.container' ) ;
    });
})(jQuery);

您必须在点击处理程序后放置','

答案 1 :(得分:2)

除了Jai所说的。你有一个codeigniter 逻辑错误。

当你说:

$this->load->view($page);

这意味着codeigniter将在内部重定向到视图。在您的情况下,您需要的是获取视图内容而不是加载它。

因此,codeigniter支持函数view()的第三个参数,要求它将视图内容作为String。你可以这样做并发送视图加载如下:

$string = $this->load->view($page, '', true);
echo $string;

希望这能解决您的问题

答案 2 :(得分:0)

也尝试改变

(function() {


})();

$(function() {


});