Codeigniter 获取 ajax 响应并将该数据从控制器传递到视图


Codeigniter get ajax response and pass that data from controller to view

我的Codeigniter应用程序有问题。我想通过 ajax 加载一些数据。在我的页面中,我编写了onclick函数来运行jQuery函数。在我的函数中,我只是将该响应发布到我的控制器。这是我的jQuery函数

 function callplayer(filepath,videocode,createdby){
        $.ajax({
            type    :   "POST",
            url :       base_url+"home/loadVideo",
            data    :   {id:videocode,video:filepath,user_id:createdby},
            success :   function(html){
                    var container = $('#company'); //jquery selector (get element by id)
                       if(html){
                          container.html(html);
                       }
            }
        });
     } 

这是我的加载视频功能(我的控制器(

function loadVideo(){
        $user_id = $_POST['user_id'];
        # Get Company 
        $user_id = $_POST['user_id'];
        $company = $this->load->model('usermanager_model', 'usermanager');
        $company_details[datas] = $this->usermanager->getCompany($user_id); 
        # Pass data to view
        $this->load->view('home_view', $company_details);
}

不要担心我的模型工作正常。这是我的观点

   <div class="video-part">
    <div class="video-details">
        <div id="test">
        <div id="mediaplayer">JW Player goes here</div>
    <?php  echo $url = vimeourl2videourl('http://vimeo.com/moogaloop.swf?clip_id=2539741') ?>
    <script type="text/javascript" src="<?php echo base_url()?>player1/jwplayer.js"></script>
    <div id="mediaplayer">JW Player goes here</div>
    <script type="text/javascript" src="jwplayer.js"></script>
    <script type="text/javascript">
        jwplayer("mediaplayer").setup({
            flashplayer: "<?php echo base_url() ?>player1/player.swf",
                        height:"350",
                        width:"500",
            'playlist': [{
            'file': 'www.youtube.com/watch?v=dHBJ8jk3944', 
            'image': '/thumbs/video1.jpg',
            'title': 'The first video'
        },],
        repeat: 'list'           
        });
    </script>
    </div>
        <div class="video-text">
            <div id="company">
            <?php 
            /*
            echo "<pre>";
             print_r($datas);
             echo "</pre>";
                */        
            foreach ($datas as $row) :
           echo $row['companyName']; 
           endforeach;
            ?>
            </div>
            <span class="txt-small">2013-06-09  |  +011 888 88   |   Canada </span>
            <span class="txt-small">Lorem Ipsum is simply dummy text of the printing and typesetting industry. </span>
            <div class="social-icons row-fix">
                <a href="#"><img src="<?php echo base_url() ?>images/icon-down.png" alt=""></a>
                <a href="#"><img src="<?php echo base_url() ?>images/icon-here.png" alt=""></a>
                <a href="#"><img src="<?php echo base_url() ?>images/icon-wifi.png" alt=""></a>
                <a href="#"><img src="<?php echo base_url() ?>images/icon-save.png" alt=""></a>
                <a href="#"><img src="<?php echo base_url() ?>images/icon-facebook.png" alt=""></a>
                <a href="#"><img src="<?php echo base_url() ?>images/icon-twitter.png" alt=""></a>
                <a href="#"><img src="<?php echo base_url() ?>images/icon-google.png" alt=""></a>
                <div class="sign-up row-fix">
                    <a href="<?php echo base_url().'registration';?>">Signup</a> <span>|</span> <a href="<?php echo base_url().'registration';?>">Login</a>
                    <div> <a href="#" class="request">Request for Product Info</a></div>
                </div>
            </div>
        </div>
    </div>
</div>

我的问题是每当我单击图像(单击功能(时,它将使用重复的htmldiv标签加载我的内容。但是如果我在我的控制器中打印这些数据,它工作正常。它仅正确显示提取的数据。如果我传递该数据进行查看和打印,那么它将显示带有一些重复div 标签的获取数据。我的朋友告诉我使用 jQuery 追加函数。但我不熟悉jQuery。请帮助找出正确的解决方案..?

您的home_view视图文件应仅具有该公司详细信息所需的最小 HTML 标记,以便输出将加载到#cointainerdiv 中。

如果您的视图文件包含整页的 HTML 代码,则该整页 HTML 将加载到该div #container中,并且您会收到重复的div

您的视图文件应包含以下内容:

<div id="company">
<?php 
    foreach ($datas as $row) :
        echo $row['companyName']; 
    endforeach;
?>
</div>