如何可靠地将 base_url 从 Codeigniter 传递到 JavaScript?
How can I reliably pass base_url from Codeigniter to JavaScript?
我正在使用 Codeigniter 3.1.8 和 Bootstrap 4.[=17= 开发一个基本的博客应用程序]
帖子有评论。当然,还有一个删除评论的功能。它通过 (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: var baseUrl = window.location.origin;
中获取 base URL 的方式有问题。仅当博客平台位于网站根目录(域)中的 运行 时才有效。
如果相反,我在 https://mywebsite.com/blog
中有 运行 我需要使用:
var baseUrl = window.location.protocol + '//' + window.location.hostname + '/' + window.location.pathname.split('/')[1] + '/';
由于这是一个旨在同时适用于上述情况和其他情况的平台,我需要更多 "universal formula" 变量 baseUrl
。
我可以 "borrow" 来自 Codeigniter 吗?如果是,如何?
您可以在页脚中添加隐藏输入,例如
<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();
....
您可以在 footer/header/page[查看文件] 中声明全局变量,例如
<script>var baseUrl = '<?= base_url(); ?>';</script>
在任何需要的地方使用baseUrl
。
我正在使用 Codeigniter 3.1.8 和 Bootstrap 4.[=17= 开发一个基本的博客应用程序]
帖子有评论。当然,还有一个删除评论的功能。它通过 (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: var baseUrl = window.location.origin;
中获取 base URL 的方式有问题。仅当博客平台位于网站根目录(域)中的 运行 时才有效。
如果相反,我在 https://mywebsite.com/blog
中有 运行 我需要使用:
var baseUrl = window.location.protocol + '//' + window.location.hostname + '/' + window.location.pathname.split('/')[1] + '/';
由于这是一个旨在同时适用于上述情况和其他情况的平台,我需要更多 "universal formula" 变量 baseUrl
。
我可以 "borrow" 来自 Codeigniter 吗?如果是,如何?
您可以在页脚中添加隐藏输入,例如
<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();
....
您可以在 footer/header/page[查看文件] 中声明全局变量,例如
<script>var baseUrl = '<?= base_url(); ?>';</script>
在任何需要的地方使用baseUrl
。