CodeIgniter中的部分URL

时间:2011-01-15 15:57:55

标签: javascript ajax url codeigniter

研究员,

到目前为止,我一直在使用CI url帮助程序使用base_url()和site_url()构建完整的URL。现在我正在尝试访问一些javascript代码中的控制器函数,该代码将作为js文件加载。

它实际上是一个带有url参数的ajax调用,应该类似于:

url : '/account/check_user'  

现在除非我在url前面加上完整路径为ins http://servername/ .....代码失败。

我见过的所有代码示例都使用了url的简短版本,但我无法让它工作。我确信这很简单,但我被卡住了。

我可以将隐藏的表单字段传递给js代码,但我宁愿不这样做。有任何想法吗?

感谢

3 个答案:

答案 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(); ?>";

在:

  1. head部分
  2. 作为我script代码的第一行
  3. 如果我有一个main.js文件,其中包含 我的JS代码 AND ,它总是包含在我的视图中,那么我首先将该行放入文件。
  4. 之后,您可以使用它:

    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>