Страница действий формы не вызывается после нажатия кнопки «Отправить» - PullRequest
0 голосов
/ 29 апреля 2018
<form class="form-inline"  action="./test.php?id=1">
                <li class="nav-item">
                    <div class="form-group">
                        <select class="custom-select custom-select-lg mb-3"  id="objectType">
                          <option selected>Object Type</option>
                          <option value="Toy">Toy</option>
                          <option value="Furniture">Furniture</option>
                          <option value="Gift">Gift</option>
                          <option value="Household">Household</option>
                          <option value="Instrument">Instrument</option>
                        </select>
                    </div>
                </li>


                <li class="nav-item">
                    <div class="form-group">
                        <select class="custom-select custom-select-lg mb-3" id="materialType">
                          <option selected>Material Type</option>
                          <option value="Mud">Mud</option>
                          <option value="Cloth">Cloth</option>
                          <option value="Thread">Thread</option>
                          <option value="Jute">Jute</option>
                          <option value="Cotton">Cotton</option>
                          <option value="Can">Can</option>
                          <option value="Bamboo">Bamboo</option>
                        </select>
                    </div>
                </li>


                <li class="nav-item">
                    <div class="form-group">
                        <div class="input-group">
                            <input class="form-control" type="search" placeholder="Search">
                            <span class="input-group-btn">
                                <button class="btn btn-outline-secondary" type="submit" id="searchSubmit"><i class="fa fa-search"></i>
                                </button>
                            </span>
                        </div>
                    </div>
                </li>
            </form>

У меня есть эта форма. При вызове кнопки отправки test.php вызывается страница со значением идентификатора запроса 1. В test.php значение поля формы будет использоваться для выполнения запроса.

фрагмент кода test.php части

$id=$_REQUEST['id'];
if ($id==1)
 {
    $result = search($_POST['imageName'],$_POST['objectType'],$_POST['materialType']);
    echo $_POST['imageName'];
}
else
{
    $result = home_page_image();
}

Когда я нажимаю кнопку отправки после заполнения поля, test.php?id=1 не появляется в адресной строке браузера, что подтверждает мне, что страница не вызывается.

Редактировать 1

Я добавил метод (POST) как @ PL200, упомянутый в его ответе, но ничего не слышно после функции search() в test.php. Я также поставил предупреждение, но не показано. оповещение работает до функции search, а значение post не отображается ни до, ни после функции search. Это означает, что значения формы не публикуются в test.php.

Редактировать 2
На самом деле я вызываю ту же страницу, когда нажимается кнопка отправки.

Ответы [ 3 ]

0 голосов
/ 29 апреля 2018

Я понимаю, что вы пытались сделать, но учтите, что некоторые браузеры игнорируют аргументы запроса, переданные с атрибутом действия формы. Таким образом, всякий раз, когда форма отправляется, в некоторых браузерах $_GET['id'] может не определяться, только противоречивое поведение. Кроме того, вы не указали какой-либо атрибут метода для своей формы.

Что вы должны были сделать вместо

Используйте скрытый элемент формы ввода для передачи значения, это рекомендуемый способ сделать это.

<form class="form-inline"  action="./test.php" method="post">
    <!-- put values to pass here -->
    <input type="hidden" value="1" name="id" />

    ...
</form>

Кроме того, вы также можете разместить скрытое поле ввода вне элемента формы и использовать идентификатор формы , чтобы связать его с полем ввода атрибутом формы . Смотрите пример ниже:

<form id="form-id" class="form-inline"  action="./test.php" method="post">
    <!-- put values to pass here -->
    ...
</form>

<!-- Bind this hidden input field to your form -->
<input type="hidden" value="1" name="id" form="form-id" />

Обратите внимание, что нет ограничений на количество скрытых полей ввода, которые вы можете использовать в одной форме, однако, сделайте это проще.

0 голосов
/ 29 апреля 2018

Нет name ввода формы.

<form class="form-inline"  action="./test.php?id=1" method="POST">
                <li class="nav-item">
                    <div class="form-group">
                        <select class="custom-select custom-select-lg mb-3"  name="objectType">
                          <option selected>Object Type</option>
                          <option value="Toy">Toy</option>
                          <option value="Furniture">Furniture</option>
                          <option value="Gift">Gift</option>
                          <option value="Household">Household</option>
                          <option value="Instrument">Instrument</option>
                        </select>
                    </div>
                </li>


                <li class="nav-item">
                    <div class="form-group">
                        <select class="custom-select custom-select-lg mb-3" name="materialType">
                          <option selected>Material Type</option>
                          <option value="Mud">Mud</option>
                          <option value="Cloth">Cloth</option>
                          <option value="Thread">Thread</option>
                          <option value="Jute">Jute</option>
                          <option value="Cotton">Cotton</option>
                          <option value="Can">Can</option>
                          <option value="Bamboo">Bamboo</option>
                        </select>
                    </div>
                </li>


                <li class="nav-item">
                    <div class="form-group">
                        <div class="input-group">
                            <input class="form-control" type="search" placeholder="Search" name="imageName">
                            <span class="input-group-btn">
                                <button class="btn btn-outline-secondary" type="submit" id="searchSubmit"><i class="fa fa-search"></i>
                                </button>
                            </span>
                        </div>
                    </div>
                </li>
            </form>

А после метода search() предупреждение не отображается, потому что в методе search() что-то не так. Я отлаживаю и исправляю ошибку в методе search(). Теперь все работает.

0 голосов
/ 29 апреля 2018

Вы не включили метод для своей формы. Измените первую строку вашего HTML на:

<form class="form-inline"  method="POST" action="./test.php?id=1">

Это должно решить вашу проблему.

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