Передать значение раскрывающегося списка в URI в PHP CodeIgniter

Я работаю над проектом CodeIgniter. В моем web-app я фильтрую свой data-tablesprocessing on server с помощью drop-down lists с выбором нескольких значений из раскрывающегося списка. Я получаю правильный вывод.

Мой код просмотра:

<div class = "content-wrapper">
<div class = "box-body">
    <form name = "listproperty" action = "" method = "post" role = "form" id = "form-filter">
        <div class = "row">
            <div class = "col-md-3">
                <label>Area: </label>
                <select class = "form-control", name = "area_name" id = "area_name">
                    <option value = "0">Select Area</option>
                    <?php 
                        $area_id; 
                        foreach ($areaList as $area) { ?>
                            <option value = "<?= $area->area_id_primary; ?>" <?php if ($area->area_id_primary == $area_id) { echo "selected='selected'"; } ?>><?= $area->area_name; ?></option>
                        <?php } ?>
                </select>
            </div>
            <div class = "col-md-3">
                <label>City: </label>
                <select class = "form-control" name = "city_name" id = "city_name" multiple = "">
                    <option value = "">Select City</option>
                    <?php $ct = explode(' ', $city); 
                        foreach ($propertyCityList as $propertyCity) { 
                            $selected = false;
                            foreach ($ct as $usercity) { 
                                if ($usercity == $propertyCity->city_id_primary) {
                                    $selected = true;
                                    break;
                                }
                            } ?>
                            <option value = "<?= $propertyCity->city_id_primary; ?>" <?php if ($selected === true) { echo "selected='selected'"; } ?>><?= $propertyCity->city_name; ?></option>
                    <?php } ?>
                </select>
            </div>
        </div>
        <div class = "row">&nbsp;</div>
        <div class = "row">
            <div class = "pull-right">
                <div class = "col-md-12">
                    <button type = "button" id = "btn-filter" class = "btn btn-success" style = "margin-right: 25px;">Filter</button>
                    <button type = "button" id = "btn-reset" class = "btn btn-default">Reset</button>
                </div>
            </div>
        </div>  
    </form>
</div><hr>
<div class = "box-body">
    <table class = "table table-striped table-bordered" id = "listpropertyData" cellspacing = "0" width = "100%">
        <thead>
            <tr>
                <th width = "10%">Added Date</th>
                <th width = "10%">ASYS No.</th>
                <th width = "18%">Address</th>
                <th width = "10%">City</th>
                <th width = "15%" style = "text-align: center;">Action</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
                <th>Added Date</th>
                <th>ASYS No.</th>
                <th>Address</th>
                <th>City</th>
                <th style = "text-align: center;">Action</th>
            </tr>
        </tfoot>
    </table>
</div>

<script type = "text/javascript">
    var property;
    $(document).ready(function() {

        $("#area_name").select2();
        $("#city_name").select2();

        property = $('#listpropertyData').DataTable({
            "processing": true,
            "serverSide": true,
            "ajax": {
                "url": "<?= base_url('Controller/getPropertyDatatable'); ?>",
                "type": "POST",
                "dataType": "JSON",
                "data": function ( data ) {
                    data.area_name = $('#area_name').val();
                    data.city_name = $('#city_name').val();
                }
            },
            "dom": '<"top"fli>rt<"bottom"p><"clear">',
            "lengthMenu": [[25, 50, 100, 200, -1], [25, 50, 100, 200, "All"]],
            "columnDefs": [
                {
                    "targets":[7],
                    "orderable":false
                },
            ],
        });

        $('.dataTables_filter input[type = "search"]').css(
            {'width':'450px','display':'inline-block'}
        );

        $('#btn-filter').click(function(){ //button filter event click
            property.ajax.reload();  //just reload table
        });
        $('#btn-reset').click(function(){ //button reset event click
            $('#form-filter')[0].reset();
            property.ajax.reload(); 
            window.location.reload(); //just reload table
        });
    });
</script>

Мой код контроллера:

public function listProperty()
{
    # code...
    $data['areaList'] = $this->property_model->areaList();
    $data['propertyCityList'] = $this->property_model->propertyCityList();
    $this->global['pageTitle'] = 'RoxAI-ePro : Property List';
    $this->loadViews("property/listProperty", $this->global, $data, NULL);
}
public function getPropertyDatatable()
{
    # code...
    $listProperty = $this->property_model->getPropertyDatatable();

    $data = array();
    foreach ($listProperty as $property) {
        # code...
        $added_on=$property->property_added_on;
        $added_on_date = str_replace('/', '-', $added_on);
        $property_added_on_date=date('d/m/Y', strtotime($added_on_date));

        $row = array();
        $row[] = $property_added_on_date;
        $row[] = $property->property_asys_number;
        $row[] = $property->property_address;
        $row[] = $property->city_name;
        $row[] = 'Action';

        $data[] = $row;
    }
    $output = array(
        'draw' => $_POST['draw'],
        'recordsTotal' => $this->property_model->countPropertyAll(),
        'recordsFiltered' => $this->property_model->countPropertyFiltered(),
        'data' => $data,
    );
    echo json_encode($output);
}

Мой вопрос в том, как я могу передать значения этого раскрывающегося списка в URL-адрес, чтобы я мог получить тот же результат напрямую, если я пытаюсь открыть copy-paste URL в другом браузере с тем же выбором значений в раскрывающемся списке?

вы хотите, чтобы фактический URL-адрес изменялся при изменении раскрывающегося списка, например. somepage? dropdown = stmt

Alex 24.10.2018 07:52

@Alex Да, когда я выбираю любое значение из или любое значение из базы данных в раскрывающемся списке, это значение будет отображаться в URL-адресе.

Ganesh Aher 24.10.2018 07:55

@Alex Короче говоря, я хочу добавить значения раскрывающегося списка в URL-адресе в запросе ajax.

Ganesh Aher 24.10.2018 07:56
stackoverflow.com/questions/3338642/…
Alex 24.10.2018 08:00
stackoverflow.com/questions/824349/…
Alex 24.10.2018 08:00

Лично я бы использовал строку запроса с pushState() в качестве упомянутого @alex, и я бы изменил способ построения массива в ajax, чтобы вытащить текущий URL-адрес браузера, тогда ваши страницы будут добавлены в закладки (сохраните поиск). когда кто-то загружает страницу, проверьте URL-адрес строки запроса и выполните вызов ajax (сделайте вызов при изменении URL-адреса). Прямо сейчас ваш URL-адрес и значения полей могут «не зависеть» или не синхронизироваться. Потому что вы используете POST, но хотите сохранить данные поиска в URL-адресе (GET).

ArtisticPhoenix 24.10.2018 08:14

Я построил целую систему, используя jQgrid, CI2 и AJAX, и если кто-то ищет, и вы хотите связать его со страницей с сеткой (таблицей), вы просто перенаправляете их на измененный URL-адрес с данными из того, что они щелкнули. Например, две связанные таблицы могут быть связаны простым щелчком, чтобы передать идентификатор через URL-адрес. Затем остальные автоматизированные функции (которые извлекают данные из URL-адреса и отправляют поиск) срабатывают как обычно. Это действительно хорошо работает (но у меня около 20 связанных таблиц, смеется).

ArtisticPhoenix 24.10.2018 08:18

@ArtisticPhoenix не рекомендую меня, ха-ха, я почти направил OP по неправильному пути. Еще несколько минут назад не знал, что изменение URL-адреса после загрузки страницы возможно. до сих пор думаю, что это немного странно давать нечестным людям такую ​​возможность менять браузер. если я правильно понимаю, после загрузки страницы somebadsite.com может сменить url на yourbank.com? или можно только хеш поменять?

Alex 24.10.2018 08:19

@Alex - вы можете изменить весь URL-адрес, но если вы нажмете перезагрузку, он перейдет в это место (отсюда и предложение изменить только строку запроса). Он не меняет ваше местоположение (если вы не нажимаете перезагрузку в браузере), в основном вы можете использовать его для хранения данных поиска. Так что они ответили, это преобразует предыдущий поиск и т. д. Я не могу сказать, что когда-либо действительно пытался изменить домен, но я полагаю, что это сработает, если они будут взаимодействовать с кнопками браузера. ... ржу не могу

ArtisticPhoenix 24.10.2018 08:20
pushState добавляет в историю, replaceState заменяет элемент в истории (не может вернуться к нему после его замены). popState срабатывает при загрузке страницы (обычно, но у меня были проблемы с этим, я стараюсь этого избегать). Если я помню, это для навигации по истории, где загрузка страницы тоже не выполняется. Хотя было минутным чувством, что я его использовал.
ArtisticPhoenix 24.10.2018 08:25
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
10
56
0

Другие вопросы по теме