【问题标题】:Why does loading a codeigniter view using ajax corrupts the css and js functions为什么使用 ajax 加载 codeigniter 视图会破坏 css 和 js 函数
【发布时间】:2017-04-19 03:51:50
【问题描述】:

所以我有一个名为 index.php 的主页,它包含整个 html 页面以及 css 和 js 资产。

<html>
    <head>
         <link rel="stylesheet" type="text/css" href="<?php echo base_url().'assets/css/main.css';?>">
         <!-- this contains my other css -->
    <head>

    <body>
          <div id="wrapper">
               <div class="main-section">
                     <?= $home ?>
                     <!-- this is the section i want to replace using ajax --> 
                     <!-- $home is a codeigniter view of the section for home -->
               </div>
          </div>


    <script>
        var BASE = "<?php echo site_url(); ?>";
    </script>
    <script src="<?php echo base_url().'assets/js/jquery.js';?>" type="text/javascript"></script>
    <script src="<?php echo base_url().'assets/js/jquery.touchSwipe.min.js';?>" type="text/javascript"></script>
    <!-- other js files -->

    </body>

</html>

所以当它像这样加载时,一切正常。但是当我像这样使用ajax函数来改变主要部分的内容时,

JQ("#btnshop").on('click', function(e) {
    e.preventDefault();
    JQ.ajax({
        url: BASE + "bhs/main/shop",
        method: 'GET',
        dataType: 'html',
        data: {},
        success: function(response) {
            $(".bhs-main-section").empty().html(response);
        }
    });
});

这是我正在获取内容的控制器的代码

public function shop()
{
    $data['tenants'] = $this->tenant->getTenants();
    $data['tenants_categories'] = $this->tenant_category->find(1);

    $this->load->view('bhs/shop', $data);
}

任何想法为什么某些 css 和 js 会被破坏?提前致谢

【问题讨论】:

  • 确保您的视图没有附加任何 css/html
  • 检查你忘记回显内容的答案
  • 确实如此.. 有什么替代方法可以在那里加载它吗?无论如何,谢谢..
  • @NishantNair,我已经尝试过回显它,它显示了 html,但某些 css 和 js 无法正常运行
  • 检查你的外部js和css中的basepath,尝试在浏览器中打开相同的路径,你会知道它是否工作。

标签: php jquery css codeigniter


【解决方案1】:

Ajax 永远不会加载视图

你需要在控制器中回显内容而不是加载视图

public function shop()
{
$data['tenants'] = $this->tenant->getTenants();
$data['tenants_categories'] = $this->tenant_category->find(1);

$echo $this->load->view('bhs/shop', $data);
}

【讨论】:

  • 我也尝试过,但结果相同,它加载了视图,但“某些 css 和 js”无法正常工作。
  • 尝试检查并检查基本路径。
【解决方案2】:

当你的视图内容 ge 那个时候你在 $ 中给出第三个参数

$this->load->view('视图名称',$data,true);

true 表示重新播放内容。

public function shop()
    {
        $data['tenants'] = $this->tenant->getTenants();
        $data['tenants_categories'] = $this->tenant_category->find(1);

       $content= $this->load->view('bhs/shop', $data,TRUE);

    echo $content;

    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多