【问题标题】:How to load a view file from within another view with Codeigniter WITHOUT having to pass through a controller?如何使用 Codeigniter 从另一个视图中加载视图文件而无需通过控制器?
【发布时间】:2013-07-30 13:18:17
【问题描述】:

我正在努力寻找解决此问题的方法,我需要从另一个视图中加载一个视图。我知道,通常情况下,我只需要这样做:

<?php $this->load->view("smthg");?>

但这一次,文件路径被传递给数据文件标签的属性。 我有:

<a data-file="<?php echo site_url('main/loadCocktailRecipient') ?>/{{Id}}" href="#">

实际上,javascript 函数使用它来自行加载视图。所以当这样做时,它会加载控制器而不是视图文件。 (或者它甚至可能不加载任何东西) 假设我已将我的视图放入 app/views 文件夹中。如何确保此脚本在不需要控制器的情况下实际加载此文件?

如果这是不可能的,我如何调整 js 脚本来加载,而不是文件本身(这里首先是控制器)而是 CI' 控制器返回的最终视图?

编辑:JS 脚本:

$(".cocktail .cocktail-item a").on('click', function(event) {

            event.preventDefault();

            var fileToLoad = $(this).data('file');

            if(portfolioActive) {
                closePortfolio(true, fileToLoad);
            } else {
                loadPortfolio(fileToLoad);
            }

        });

和加载组合功能是:

function loadPortfolio(fileToLoad) {
            $portfolioSingle.load(fileToLoad, function() {
                portfolioSingleH = $portfolioSingle.find('.container').outerHeight();
                $portfolioSingle.css({
                    'top': -portfolioSingleH
                });
                $('#portfolio').animate({ scrollTop: 0 }, "slow");
                $portfolioSingle.stop().animate({
                    'top': 0
                }, 500, 'easeOutCubic');
                $portfolioContainer.stop().animate({
                    'marginTop': portfolioSingleH
                });
                portfolioActive = true;
                bindClosePortfolio();
                bindFancybox();
                setupFlexslider();
            });
        }

如果这太复杂了,那我怎么能简单地告诉他通过 id 查找车把脚本并加载将动态生成的内容?

谢谢

【问题讨论】:

    标签: php codeigniter templates codeigniter-2


    【解决方案1】:

    不要这样做,这是个坏主意。为此,您需要从 views 文件夹中删除 .htaccess 文件。

    改为使用发出 ajax 请求的 jquery get 函数。 $.get("main/loadCocktailRecipient/1");

    最好的方法是做一个新的控制器,它返回一个带有请求数据的 json 对象。然后,使用 $.get 检索该 json,最后,遍历该 json 以随时放置内容。

    来自 jQuery Documentation:

    $.ajax({
        url: "main/loadCocktailRecipient", //the url to retrieve the data
        data: { id: "1" }, //you can send the get parameters here
        success: success, //the data returned (your json or html)
        dataType: dataType //html, json, etc... if the dataType returned is not what you specify it will enter on a .error function. check the jquery documentation
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-01
      • 2017-09-17
      • 1970-01-01
      • 2013-03-06
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多