下拉重新加载页面然后检索值

时间:2012-08-20 15:13:54

标签: php javascript

你好到目前为止一直试图使用这行代码我的目标是通过重新加载页面 选择然后选择获取值,以便页面将重新加载所述值 我也许能够找回它。 这两种都是1种形式。 这是我应该重新加载后使用我的值的地方。

    <input type="hidden" name="student_id" class="typed" readonly="readonly" value="<?php echo @$get_display->student_id;?>">

这就是我正在尝试使用重新加载页面获取上面的值。

    <select name="lvl" onchange="window.location='search_enroll.php?id='$_GET['student_id']">

感谢您的任何帮助。

这是我如何检索我在我的最后一个语句中有一个问题,它应该检索 重新加载后的值。

   if (!empty($_POST['searchstudent'])){
                $id = $_POST['searchstudent'];

            }else if(!empty($_GET['id'])){
                $id = $_GET['id'];
            }
            else {
                $id= $_GET['student_id'];
            }

3 个答案:

答案 0 :(得分:1)

写作时

<select name="lvl" onchange="window.location='search_enroll.php?id='$_GET['student_id']">

您实际上导航到了让您进入该页面的同一student_id。

您要做的是询问“用户选择哪个student_id?”并在下一页加载中使用它。

HTML应该看起来像

<form action="search_enroll.php">
    <select name="id" onchange="submit()">
       <option> student_id_1 </option>
       <option> student_id_2 </option>
        ...
    </select>
</form>

如果有任何问题,请告诉我。

这是一个模拟重新加载的JSFiddle。 (它将显示404,因为'search_enroll.php'不存在,但您仍然可以看到重新加载。)

编辑:在我解释了这个选择

的目的之后添加“隐藏”输入字段

如果您有2个字段(student_id,grade),则应该向表单添加隐藏的输入字段。表单应如下所示:

<form action="search_enroll.php">
        <input value="<?php echo $_GET['student_id']?>" type="hidden"/>
        <select name="grade" onchange="submit()">
           <option> student_id_1 </option>
           <option> student_id_2 </option>
            ...
        </select>
</form>

这将确保之前选择的student_id将传递给另一个重新加载。

答案 1 :(得分:0)

如果您在表单中,则可以在更改时提交表单:

onchange="document.yourForm.submit()"

所有参数都可用于PHP脚本。

答案 2 :(得分:0)

您不希望在select元素中使用PHP,因为在生成页面时会填充(服务器响应),但是当您发送请求时,您要执行的操作是填充它服务器。

最简单的方法是使用onchange="document.aForm.submit()"简单地提交表单,其中包含该字段更改时的所有值。您的服务器端验证需要能够理解这是部分提交,并且不应该向用户显示错误消息。


回应海报的问题:

您有以下事件链:

  1. 客户请求表单页。
  2. 服务器发送响应,select元素填充option个元素。
  3. 客户选择option元素的select元素。
  4. 客户端向服务器发送请求,包括选择option以某种方式)。
  5. 服务器发送响应,其中一些表单元素已更改,并且客户端在上次请求中选择了option元素。
  6. 服务器无法在步骤1预先填充onchange元素的select属性(并且不应该在步骤5,因为客户端可能会更改其选择);在客户端在步骤3选择并在步骤4将该选择发送到服务器之前,服务器不知道客户端将选择哪个选项。

    我和其他人建议使用submit()代替window.location的原因是,对于表单,客户端可以按任何顺序填写字段,或者您可以稍后在{{1}之前添加字段在这种情况下,最好保留这些选择。如果PHP在生成表单时从select对象获取所有字段,submit会保留这些内容。如果使用POST,那么window.location请求中未包含的所有内容都将丢失。

    如果您确实要使用GET,则必须使用JavaScript来获取路径所选window.location的值(类似option)。