我在PHP / HTML页面上有一个下拉列表。我旁边有一个按钮,当点击它时会打开一个弹出窗口,通过它我可以在下拉列表中添加更多项目(它存储在一个mysql表中)。当我关闭弹出窗口时,它应该触发一个事件,而该事件应该刷新父页面上的下拉列表。
怎么做?谢谢!
编辑:页面上有2个下拉列表。第二个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>
名为&#39; ab&#39;的ajax函数选择第一个DDL时刷新。
addsch.php在弹出窗口中打开一个表单,其中有一个提交按钮,用于将表单数据保存到mysql表中。
示例:我选择&#39; State1&#39;从第一个DDL,学校名称为'State1&#39;显示在第二个DDL中。我想添加一个学校名称(说'#State;&#39;到第二个DDL,所以我使用添加选项。保存表单数据后,我希望第一个DDL以这样的方式刷新&#39; State1& #39;留在那里,第二个DDL显示&#39; State2&#39;。否则,至少第一个DDL刷新,然后用户可以从第二个DDL自己选择“状态2”。
怎么做?
答案 0 :(得分:1)
如果它存储在MYSQL表中,系统无法刷新您的下拉列表而无需实际刷新页面。如果我理解了一切,这可能会对你有所帮助:
Open popup and refresh parent page on close popup
如果您不想刷新页面而只想刷新下拉列表,那么您必须自己制作AJAX功能。
编辑:看起来你最好不要刷新整个页面并做一个javascript函数,它会将选项输入的值存储到会话数组中,每次你加载这个页面它都会找到这个值。如果未设置密钥,则会选择第一个列表中的第一个选项。
快速浏览一下这个小提琴:
https://jsfiddle.net/98k456ho/1/
Needs jQuery
不幸的是它不起作用,因为它使用sessionStorage,但你可以将它粘贴到你的php文件中,它应该工作。
sessionStorage类似于localStorage允许您存储键/值“对象”,可以非常快速地访问它。与简单的cookie相比,它允许您存储更多数据。
此代码的作用是每次从列表中选择一个选项时,该值都存储在会话数组中。每次加载页面时,它都会在会话中查找值,如果选择了第一个值,或者用户没有选择单个值,则会将默认值设置为“选择”。
在您的情况下,如果用户选择例如“California”,则他可以访问您第二个列表中的所有选项。关闭弹出窗口后,因为所有内容都存储在会话中,所以一切都是一样的。
需要注意的一点是,javascript需要在你进行mysql查询之前运行,否则你的第一个下拉列表中的值会被选中,但是你的第二个列表中没有或者没有值。