Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何刷新父页面上的下拉列表_Php_Jquery_Html_Mysql_Ajax - Fatal编程技术网

Php 如何刷新父页面上的下拉列表

Php 如何刷新父页面上的下拉列表,php,jquery,html,mysql,ajax,Php,Jquery,Html,Mysql,Ajax,我在PHP/HTML页面上有一个下拉列表。我在它旁边有一个按钮,单击该按钮会打开一个弹出窗口,通过该窗口我可以向下拉列表中添加更多项目(它存储在mysql表中)。当我关闭弹出窗口时,它将触发一个事件,该事件将刷新父页面上的下拉列表 怎么做?谢谢 编辑:页面上有两个下拉列表。第二个DDL中的选项列表取决于第一个DDL中所做的选择。在第二个DDL旁边,有一个按钮可以打开一个弹出窗口。使用PPW可以向第二个DDL(存储在mysql表中)添加选项 现在弹出窗口选项工作正常,数据保存在表中。现在我唯一的选

我在PHP/HTML页面上有一个下拉列表。我在它旁边有一个按钮,单击该按钮会打开一个弹出窗口,通过该窗口我可以向下拉列表中添加更多项目(它存储在mysql表中)。当我关闭弹出窗口时,它将触发一个事件,该事件将刷新父页面上的下拉列表

怎么做?谢谢

编辑:页面上有两个下拉列表。第二个DDL中的选项列表取决于第一个DDL中所做的选择。在第二个DDL旁边,有一个按钮可以打开一个弹出窗口。使用PPW可以向第二个DDL(存储在mysql表中)添加选项

现在弹出窗口选项工作正常,数据保存在表中。现在我唯一的选择就是刷新页面。我希望在单击PPW上的关闭按钮时发生事件。此事件应刷新第一个DDL,使之前选择的选项保持选中状态。它也可以这样做:我添加的数据应该在第二个DDL中选择

代码

第一个DDL

<td>State Name</td> 
<td><select id="a" name="a" onchange="ajax(this.value);">
<option value="">Select State Name</option>
<?php
$sql = "SELECT * FROM State";
$abc = mysql_query($sql);   
while($row = mysql_fetch_array($abc)){ 
echo "<option value=\"".$row['scode']."\">".$row['State']."</option>\n";}
?>
</select></td>
州名
选择州名称
第二个DDL

<td>School Name</td>
<td><select name="schname">
<option value="">Select School Name</option></select>
<A href="addsch.php?State=<?php echo $state?>&scode=<?php echo $scode?>"Target='_blank'>Add New School Name</a></td>
学校名称
选择学校名称
当选择第一个DDL时,名为“ab”的ajax函数进行刷新

addsch.php在弹出窗口中打开一个表单,其中包含一个提交按钮,该按钮将表单数据保存到mysql表中

示例:我从第一个DDL中选择“State1”,第二个DDL中显示“State1”的学校名称。我想在第二个DDL中添加一个学校名称(比如“State2”,所以我使用add选项。保存表单数据后,我希望第一个DDL刷新时“State1”保持不变,第二个DDL显示“State2”。否则至少刷新第一个DDL,然后用户可以自己从第二个DDL中选择“State2”


如何做到这一点?

如果存储在MYSQL表中,系统无法在不刷新页面的情况下刷新下拉列表。如果我理解正确,这可能会帮助您:

如果您不想刷新页面,只想刷新下拉列表,那么您必须自己创建一个AJAX函数

编辑:从外观上看,您最好刷新整个页面,并执行javascript函数,该函数将选项输入的值存储到会话数组中,每次加载此页面时,它都会查找此值。如果未设置键,则会选择第一个列表中的第一个选项

快速查看一下这个js小提琴:

不幸的是,它不工作,因为它使用sessionStorage,但您可以将其粘贴到php文件中,它应该可以工作

sessionStorage与localStorage类似,它允许您存储键/值“object”,可以非常快速地访问该对象。与简单的cookie相比,它允许您存储更多的数据

这段代码的作用是,每次您从列表中选择一个选项时,该值都会存储到会话数组中。每次加载页面时,它都会在会话中查找该值,如果用户选择了第一个值或没有选择单个值,它会将默认值设置为“选择”

在您的情况下,如果用户选择“California”,他可以访问第二个列表中的所有选项。关闭弹出窗口后,由于所有内容都存储在会话中,因此所有内容都将相同


需要注意的一点是,javascript需要在您执行mysql查询之前运行,否则将选择第一个下拉列表中的值,但您将在第二个列表中没有或出现错误的值。

是的,仅刷新下拉列表。从理论上讲,我不能对弹出窗口使用onclick事件,该窗口应仅刷新dro吗pdown在父页面上?当然可以。但是正如您所说,列表中的数据存储在数据库中,根据插入到表中的内容刷新列表中的值的唯一方法是刷新整个父页面,或者通过ajax发出get/post请求,这样您只需刷新列表。假设值为列表中的es来自数组。ajax请求将返回新值,这些值将替换第一个数组中的值。谢谢,但还有其他元素(下拉列表、文本框等)在此之前,用户将访问DDL。然后,您可以调整您的代码,以便根据用户选择的内容和刷新前他选择的内容填充所有内容。这是相同的思维过程。无论您选择哪种方式(ajax或非ajax),因为您要跟踪用户的选择,您都必须将其选择存储在某个位置并保存“调整”你的刷新。好吧,现在我被困在其他地方了。我正在使用$\u SESSION['xyz']=$\u POST['xyz'];以及“添加学校名称”临时存储表单变量“按钮被单击时,将显示一个包含表单的新windon。提交表单后,父页面将自动重新加载。我还在输入标记中使用value=”“在输入框中显示会话变量。但当页面刷新时,值不会保留。我做错了什么?我已编辑了问题并添加了代码。”
Needs jQuery