研究员,
到目前为止,我一直在使用CI url帮助程序使用base_url()和site_url()构建完整的URL。现在我正在尝试访问一些javascript代码中的控制器函数,该代码将作为js文件加载。
它实际上是一个带有url参数的ajax调用,应该类似于:
url : '/account/check_user'
现在除非我在url前面加上完整路径为ins http://servername/ .....代码失败。
我见过的所有代码示例都使用了url的简短版本,但我无法让它工作。我确信这很简单,但我被卡住了。
我可以将隐藏的表单字段传递给js代码,但我宁愿不这样做。有任何想法吗?
感谢
答案 0 :(得分:3)
我通常将base_url()分配给头部中的JS变量,以使其可用于所有方法。像这样的东西
<script type="text/javascript">
var baseUrl = "<?php echo base_url() ?>";
</script>
答案 1 :(得分:3)
好吧,我也倾向于使用绝对URL ,我总是做的一个很好的做法是声明一个JS变量:
var base_url = "<?php echo base_url(); ?>";
在:
head
部分script
代码的第一行main.js
文件,其中包含 我的JS代码 AND ,它总是包含在我的视图中,那么我首先将该行放入文件。之后,您可以使用它:
url : base_url + 'account/check_user'
无论如何,你网址中的第一个斜杠/
告诉浏览器转到URL根目录,这不是放置你的网址块的正确位置!例如:
如果您的CI安装位于ci
文件夹中,并且您的网址为:domain.com/ci/contorller/method/
然后您的网址将变为:domain.com/contorller/method/
!!
答案 2 :(得分:0)
您实际上应该使用CI的site_url()函数。 base_url()对于生成资源的URL(例如脚本或样式表)非常有用,但是在生成应用程序本身内页面的URL时,例如在发出Ajax请求时,site_url()是最佳选择,如上所述
因此,使用的最佳代码将是以下几点:
<script type="text/javascript">
var site_url = "<?php echo site_url() ?>";
</script>