0

「Load-about.php」というページからAJAXを使用してメインページにdivをプルしようとしています。私は tutsnet コースの「jQuery を学ぶ 30 日間」をフォローしてきましたが、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 (Internal Server Error)」を取得しています

クラスを指定したかったので、問題は.containerに由来し、Ciはそれがパラメーターであるため理解しています。

コントローラーは次のとおりです。

class 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 を取得したいだけです。

4

3 に答える 3

2

ジャイが言ったことに加えて。codeigniter論理エラーがあります。

あなたが言う時:

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

これは、codeigniter が内部的にビューにリダイレクトすることを意味します。あなたの場合、必要なのはビューのコンテンツを取り戻し、ロードしないことです。

そのため、codeigniterview()は、ビューのコンテンツを として取得するように要求する関数を持つ 3 番目のパラメーターをサポートしますString。あなたはそれを行うことができ、次のようにビューを送信してロードすることができます:

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

これで問題が解決することを願っています

于 2013-01-15T13:42:14.533 に答える
2

上に移動する必要があります。

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

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

After click handlerを配置する必要が','あります。

于 2013-01-15T11:56:32.817 に答える
0

また、変更してみてください

(function() {


})();

$(function() {


});
于 2013-01-15T12:00:40.057 に答える