如何使用Codeigniter在URL中传递变量?

时间:2019-04-27 05:02:47

标签: php jquery ajax codeigniter

我要传递多个变量,例如window.location.href="<?php echo base_url(); ?>search?result="+state1+"&c="+city1;而不是window.location.href="<?php echo base_url(); ?>search/"+state1+"/"+city1;

现在,问题是当我单击“提交”按钮后定义了route,即$route['search?(:any)'] = "test/search?$1";时,它在search页上显示了错误,什么也不打印。那么,如何解决此问题?请帮助我。

视图:

<script>
    $(".submit").click(function(){
        state1 = $("#state1").val();
        city1 = $(".city1").val();
        window.location.href="<?php echo base_url(); ?>search?result="+state1+"&c="+city1;
    });
</script>

控制器:

public function search($raw)
{
    echo $raw;
}

config / route.php

$route['search?(:any)'] = "test/search?$1";

谢谢

4 个答案:

答案 0 :(得分:0)

您的路由错误。无需路由网址即可访问public async Task MakeBreakfast() { async Task MakeTea() { await BoilWater(); await PutTeainWater(); } async Task MakeToast() { await StartToaster(); await PutBreadinToaster(); await SpreadButter(); } await Task.WhenAll(MakeTea(), MakeToast()); } 值。

尝试以下代码。

$_GET更改为$route['search?(:any)'] = "test/search?$1";

要获取其值:

$route['search'] = "test/search";

$this->input->get('result');

答案 1 :(得分:0)

尝试一下,
POST:

$(".submit").click(function(){
 var state1 = $("#state1").val();
 var city1 = $(".city1").val();
 $.ajax({
    beforeSend: function () {
    },
    complete: function () {
    },
    type: "POST",
    url: "<?php echo site_url('controller/cmethod'); ?>",
    data: ({state: state1 ,city: city1}),
    success: function (data) {
    }
 });
});

获取:

$(".submit").click(function(){
 var state1 = $("#state1").val();
 var city1 = $(".city1").val();
 $.ajax({
    beforeSend: function () {
    },
    complete: function () {
    },
    type: "GET",
    url: "<?php echo site_url('controller/cmethod/'); ?>"+state1+"/"+city1 ,
    success: function (data) {
    }
 });
});

PHP:
开机自检

function search(){
    echo print_r($_POST);die;
}

获取

function search($state,$city){
    echo $state;
    echo $city;
    die;
}

答案 2 :(得分:0)

当前您正在做的是向控制器发送$ _GET数据,您将需要使用来访问数据

$this->input->get();

这是一个数组,因此您将自动获取所有已发送的变量。

或者,您也可以按CI3的设计目的通过段发送数据。在控制器中,您可以将参数作为参数传递给函数。例如

function search($param1,$param2,$param3){
}

使用此方法,然后可以通过使用您的网站URL和数据段来访问此信息。

www.test.com/index.php/controller/param1/param2

您还需要将JS代码更改为

window.location.href="<?php echo base_url(); ?>search/" + state1 + "/" + city1;

答案 3 :(得分:0)

您尝试使用Get方法的值,例如Url参数, 请尝试此代码

jQuery代码

     $(".submit").click(function(){
    state = $("#state").val();
    city = $(".city").val();
    window.location.href="<?php echo base_url(); ?>search?state="+encodeURIComponent(state)+"&city="+encodeURIComponent(city);
});

路线

$route['search'] = "test/search";

控制器

public function search()
    {
        $state = $this->input->get('state');
        $city = $this->input->get('city');
    }