【问题标题】:Simple AJAX query with CodeIgniter and jQuery使用 CodeIgniter 和 jQuery 进行简单的 AJAX 查询
【发布时间】:2013-01-15 11:53:41
【问题描述】:

我只是想用 AJAX 将一个名为“Load-about.php”的页面中的 div 拉到我的主页上。 我一直在学习 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(); 要么 返回假; 不是阻止链接到他们的默认操作吗?

谢谢

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

问题来自 .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 到主页。

【问题讨论】:

    标签: ajax codeigniter jquery preventdefault


    【解决方案1】:

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

    当你说:

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

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

    因此,codeigniter 支持带有函数view() 的第三个参数,它要求它以String 获取视图内容。您可以这样做并像这样发送要加载的视图:

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

    希望这能解决你的问题

    【讨论】:

    • 谢谢你,Mamdouh,我不知道这个逻辑。
    【解决方案2】:

    你必须向上移动它:

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

    并且您必须在点击处理程序之后添加','

    【讨论】:

    • 谢谢,但同样的事情,我仍然被重定向到localhost.com/CodeIgniterJQUERY/index.php/Ajax/… 你的意思是“你必须在点击处理程序之后放一个','”。我不知道我应该把昏迷放在哪里
    • 你在$('a').on('click' function(e) { 的回答中提到了click 之后',' 丢失了。
    • 谢谢,很遗憾,我遇到了另一个错误,请检查编辑
    【解决方案3】:

    也尝试改变

    (function() {
    
    
    })();
    

    $(function() {
    
    
    });
    

    【讨论】:

    猜你喜欢
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-08
    • 2011-10-22
    • 1970-01-01
    相关资源
    最近更新 更多