You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过window.location.href传递两个变量并在CodeIgniter视图中获取

解决window.location.href传递多变量并在CodeIgniter中获取的问题

我来帮你搞定这个问题!你当前的代码只传递了一个变量v1,还多了个不必要的空格,这大概率就是你出错的原因。下面给你两种实用的方案,分别对应CodeIgniter里常用的两种参数传递方式:

方案1:通过URL路径参数传递(CodeIgniter推荐风格)

这种方式会把变量直接拼在URL的路径里,比如http://你的域名/controller/method/值1/值2,看起来更整洁。

前端JS代码修正:

<script>
var v1 = "1";
var v2 = "2";
// 把两个变量作为路径片段拼接,注意不要加多余空格
window.location.href = "<?=base_url('controller/method/')?>" + v1 + "/" + v2;
</script>

后端控制器获取参数:

在你对应的控制器方法里,有两种获取方式:

  • 直接作为方法形参接收(最简洁):
// 你的控制器文件
class Controller extends CI_Controller {
    public function method($v1, $v2) {
        // 直接使用$v1和$v2即可
        echo "变量1的值:" . $v1;
        echo "<br>变量2的值:" . $v2;
    }
}
  • 通过URI类获取(适合不想在方法定义里写参数的场景):
public function method() {
    // segment的数字对应URL的片段位置:controller是第1段,method是第2段,v1是第3段,v2是第4段
    $v1 = $this->uri->segment(3);
    $v2 = $this->uri->segment(4);
    
    // 后续逻辑处理
}

方案2:通过GET查询字符串传递

这种方式是传统的URL参数格式,比如http://你的域名/controller/method/?v1=值1&v2=值2,适合需要传递可选参数的场景。

前端JS代码:

注意如果变量包含特殊字符(比如空格、中文、&等),一定要用encodeURIComponent编码,避免URL解析错误:

<script>
var v1 = "1";
var v2 = "2";
// 拼接查询字符串,对变量进行编码
window.location.href = "<?=base_url('controller/method/')?>?v1=" + encodeURIComponent(v1) + "&v2=" + encodeURIComponent(v2);
</script>

后端控制器获取参数:

使用CodeIgniter的Input类来安全获取GET参数(不推荐直接用$_GET,因为Input类会做安全过滤):

public function method() {
    $v1 = $this->input->get('v1');
    $v2 = $this->input->get('v2');
    
    // 后续逻辑处理
}

注意事项

  • 如果变量值包含特殊字符(比如空格、中文、&、=等),一定要用encodeURIComponent编码,否则会导致URL参数解析混乱。
  • 用路径参数的话,要确保你的CodeIgniter路由规则没有限制这些额外的参数(默认路由是支持的,除非你自定义了严格的路由规则)。

内容的提问来源于stack exchange,提问作者mahesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:56:23