关于php:单击提交按钮后不调用表单操作页面

Form action page is not called after click submit button

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<form class="form-inline"  action="./test.php?id=1">
                <li class="nav-item">
                   
                        <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>
                   
               
</li>



                <li class="nav-item">
                   
                        <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>
                   
               
</li>



                <li class="nav-item">
                   
                       
                            <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">
                                </button>
                            </span>
                       
                   
               
</li>

            </form>

我有这个表格。当提交按钮被调用 test.php 页面被调用,请求 id 值为 1。在 test.php 表单字段的值将用于进行查询。

部分

的test.php代码片段

1
2
3
4
5
6
7
8
9
10
$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

我已经添加了@PL200 在他的回答中提到的方法(POST),但是在test.php 中的search() 函数之后没有回显。我也发出了警报,但未显示。警报在 search 函数之前工作,并且 post 值既不是在 search 函数之前也不是之后的回显。这表明表单值未发布在 test.php.

编辑 2
实际上,当单击提交按钮时,我调用了相同的页面。


您没有为您的表单添加任何方法。将 html 的第一行更改为:

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

这应该可以解决您遇到的问题。


我理解您的意图,但请注意,某些浏览器会忽略使用表单操作属性传递的查询参数。因此,每当提交表单时,在某些浏览器上可能没有定义 $_GET['id'],只是行为不一致。
此外,您没有为表单指定任何方法属性。

你应该做的

使用隐藏的输入表单元素来传递您的值,这是推荐的方式。

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

此外,您还可以将隐藏的输入字段放在表单元素之外,并使用表单 id 与输入字段表单属性一起引用它。请参见下面的示例:

1
2
3
4
5
6
7
<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" />

请注意,您可以在单个表单中使用的隐藏输入字段的数量没有限制,但是,让它变得简单。


没有name的表单输入。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<form class="form-inline"  action="./test.php?id=1" method="POST">
                <li class="nav-item">
                   
                        <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>
                   
               
</li>



                <li class="nav-item">
                   
                        <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>
                   
               
</li>



                <li class="nav-item">
                   
                       
                            <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">
                                </button>
                            </span>
                       
                   
               
</li>

            </form>

并且在 search() 方法之后没有显示警报消息,因为在 search() 方法中出现了问题。我调试并纠正了 search() 方法中的错误。现在一切正常。