我的 CI 应用程序中有一个 ajax 请求,这是我的 cstom.js 文件。
$(document).ready(function(){
var base_url='<?php echo base_url();?>';
$('#add-ct').click(function(){
$.ajax({
url:base_url+'stockmanagement/add_category',
data:{category:$('#category').val()},
success:function(data){
alert(data);
},
error:function(err){
alert('error'+err);
}
});
});
});
但是base_url
并没有重新殖民,当我检查调试控制台时,base_url
的打印方式与源代码相同。
var base_url='<?php echo base_url(); ?>';
更新
我的 JavaScript 文件包含在视图文件中
<?php if($page=='add-category'){ echo '<script src="'.base_url().'/assets/js/custom.js"></script>'; }?>
问题是您正在尝试在JS文件中运行PHP代码。这将不起作用,因为 PHP 代码只能在以 .php
扩展名命名的文件中运行。
要解决此问题,您必须在 Javascript 中设置一个全局变量来保存base_url的值
因此,如果要包含JS文件,则应首先定义变量,如以下示例所示:
索引.php
<html>
<head>
<!-- SET GLOBAL BASE URL -->
<script>var base_url = '<?php echo base_url() ?>';</script>
<script src="/assets/js/custom.js"></script>
</head>
<body>
</body>
</html>
定制.js
//now we can reference the base_url
alert(base_url+"some/other");
在
头文件中声明 var base_url
<script>
var base_url = "<?php echo base_url();?>";
</script>
在模板中,我把这个:
<script>
var base_url = "<?= base_url(); ?>";
</script>
<script src="<?= base_url('assets/js/main.js'); ?>">
然后在然后 main 中.js像这样:
function logout(){
var element = document.getElementById("lobtn");
location.href = base_url+"user/logout";
}
它会把你送到"yoursite.com/user/logout"...
编辑:"lobtn"是注销按钮的 ID...
<?php echo base_url();?>
PHP 代码不会在 js 文件中执行。您必须声明 var base_url = "<?php echo base_url();?>";
PHP 文件(如模板文件)中作为全局变量。
<script>
var base_url = "<?php echo base_url();?>";
</script>
您可以做一件事复制上面的代码并将其粘贴到头文件中