Передать в action данные из адресной строки

173
18 апреля 2017, 07:09

Допустим, мы находимся на странице (неважно какой) и у нас в адресной строке что-то вроде: https://site.com/app/backend.php?param1=abc&param2=cde

На странице есть форма с <input name='param3'> отправив которую вы должны попасть на эту же страницу, с первыми двумя параметрами + к ним должен приклеится третий. Т.е. в конечном итоге после отправки формы мы должны попасть на https://site.com/app/backend.php?param1=abc&param2=cde&param3=aaa

Мое решение:

<? $repeatRequest = http_build_query($_GET); ?>
<form class="form-inline" action="backend.php?<?=$repeatRequest?>" method="get">
    <div class="form-group">
        <label>Страница: </label>
        <div class="input-group">
            <input type="text" name="param3" class="form-control" size="2" value="<?=$_GET['offset']/20?>">
            <span class="input-group-btn"><button class="btn btn-default" type="submit">перейти</button></span>
        </div>
    </div>
</form>

Но в конечном итоге мы попадаем на https://site.com/app/backend.php?param3=aaa

В чем беда и как это фиксить?

Answer 1

Как сказал выше, запилить костыль на JS оказалось проще. Есть input с button

<input id="page-number" type="text">
<button onclick="paginationManager()" type="button">перейти</button>

Когда юзверь меняет что-то в input и жмет на кнопку, то выполняется следующий скрипт:

function paginationManager(){
    /*Получаем содержимое адресной строки*/
    var location =  window.location.toString();
    /*Получаем значение, которое ввел пользователь*/
    var page = document.getElementById("page-number").value;
    /*Тут будет ссылка, по которой нас перенаправит*/
    var link;
    /*Если параметр page-number (тот самый доп параметр) уже есть, то изменяем его (\d) означает цифру. Иначе к текущим параметрам "клеим" дополнительный */
    /*Это нужно, чтобы избегать повторений в адресной строке але &page-number=3&page-number=5*/
    if (location.search(/page-number=\d/) != -1) {
        location = location.replace(/page-number=\d/, "page-number=" + page);
        link = location;
    } else {
        link = location + "&page-number=" + page;
    }
    /*Переадресация на сформированную ссылку*/
    window.location.href = link;
}

Минус очевиден - отключен js - работать не будет. Буду рад увидеть здесь нормальное решение.

READ ALSO
Блоки в ряд, адаптация по ширене экрана

Блоки в ряд, адаптация по ширене экрана

Помогите расположить три блока в строку на всю ширину экрана, так, чтобы левый и правый имели фиксированную ширину, а средний адаптивно сжимался...

237
Непонятные отступы у текста сверху и снизу (не margin)

Непонятные отступы у текста сверху и снизу (не margin)

Доброй ночи, уважаемые коллеги!

325
Добавление svg на background страницы

Добавление svg на background страницы

Можно ли добавить svg изображение на background страницыТак что бы можно было обратиться к нему с помощью js и изменить его viewport? Я новичек по этому...

212