如何可靠地将base_url从Codeigniter传递给JavaScript?

问题描述 投票:0回答:2

我正在使用Codeigniter 3.1.8Bootstrap 4开发基本的博客应用程序。

帖子有评论。当然,有删除评论功能。它通过(jQuery)AJAX运行:

$('.delete-comment').on('click', function(evt) {
    evt.preventDefault();
    var baseUrl = window.location.origin;
    var deleteUrl = $(this).attr('href');
    var id = $(this).data('id');
    var commentsCount = Number($("#comments_count").text());

    if (confirm('Delete this comment?')) {
        $.ajax({
            url: baseUrl + '/dashboard/comments/delete/' + id,
            method: 'GET',
            dataType: 'html',
            success: function(deleteMsg) {
                commentsCount = commentsCount - 1;
                $('tr#' + id).fadeOut('250');
                $("#comments_count").text(commentsCount);
                $('#comment_delete_msg').text("The comment has been deleted");
                $('#comment_delete_msg').slideDown(250).delay(2000).slideUp(250);
            }
        });
    }
});

在某些情况下,我在JavaScript中获取基本URL的方式存在问题:var baseUrl = window.location.origin;。仅当博客平台运行在网站(域)的根目录中时,此选项才有效。

如果相反,我需要在https://mywebsite.com/blog中运行它:

var baseUrl = window.location.protocol + '//' + window.location.hostname + '/' + window.location.pathname.split('/')[1] + '/';

由于这是一个旨在在上述情况以及可能在其他情况下使用的平台,所以我需要为变量baseUrl使用更多的“通用公式”。

我可以从Codeigniter中“借用”它吗?如果是,怎么办?

javascript php codeigniter base-url
2个回答
0
投票

您可以在页脚中添加隐藏的输入,如

<input type="hidden" id="base_url" value="<?php echo base_url();?>"/>

那么您也许可以在JS中使用它,例如

$('.delete-comment').on('click', function(evt) {
evt.preventDefault();
var baseUrl = $('#base_url').val();
....

0
投票

您可以在页脚/页眉/页面[查看文件]中声明全局变量,例如

<script>var baseUrl = '<?= base_url(); ?>';</script>

在需要的任何地方使用baseUrl

© www.soinside.com 2019 - 2024. All rights reserved.