Как передать переменные в URL, используя codeigniter? - PullRequest
0 голосов
/ 27 апреля 2019

Я передаю несколько переменных, таких как 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;
}

конфиг / route.php

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

Спасибо

Ответы [ 4 ]

0 голосов
/ 06 мая 2019

Вы пытаетесь использовать Получить значения метода, такие как параметр 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');
    }
0 голосов
/ 27 апреля 2019

Попробуйте,
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) {
    }
 });
});

GET:

$(".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:
POST

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

GET

function search($state,$city){
    echo $state;
    echo $city;
    die;
}
0 голосов
/ 27 апреля 2019

В настоящее время вы отправляете данные $ _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;
0 голосов
/ 27 апреля 2019

Ваш маршрут неверен.Нет необходимости направлять URL для доступа к значениям $_GET.

Попробуйте код ниже.

Измените $route['search?(:any)'] = "test/search?$1"; на $route['search'] = "test/search";

Чтобы получить значения:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...