项目背景
我有一个功能正常的搜索表单,它有5个相关的下拉列表,用于深入挖掘数据。在我的dim_id
页面上选择了第一个变量product_request
,OnChange
将变量发送到我的ajax处理程序,以使用相关数据填充下一个选择cap_id
。这将继续发生,返回和第四,直到选择了5个参数,并且仅使用一个选项激活第六个框productnumber
。
总的来说,如果有人冷静地进入这个页面,它的功能就完美了。
我撞墙的地方:
现在我们希望能够从父产品页面进入带有dim_id
的网页,这样他们就可以使用其他四个下拉菜单选择其变体。
我认为需要发生的是dim_id
需要像这样构建到网址中:
product_request.php?dim_id=1
以某种方式跳过这样的过程:
1)在第一个下拉列表中进行正确选择
2)自动提示OnChange
事件转到我的Ajax处理程序,用相关数据填充第二个选择框cap_id
对不起,我没有代码片段,老实说,我不知道在这个功能发生的地方甚至开始。
答案 0 :(得分:0)
请记住这是一种可能的解决方案。您已建议使用URL参数进行数据传输,这是一个好主意。在PHP中,可以通过$_GET
超全局访问URL参数。
在示例字符串http://example.com/product_request.php?dim_id=1
中,您可以通过访问$var = $_GET["dim_id"]
来访问该参数。如果设置了此参数,则您需要将选项添加到第一个选择框中,方法是简单地使用PHP回显它或滚动列表并使用Javascript选择它。然后,您可以回显一些Javascript代码,为选择框调用onChange处理程序,就像它被选中一样。这将使其使用值预填充第二个框。草稿可能如下:
<?php
$have_dID = false;
if (isset($_GET["dim_id"])) {
$dID = $_GET["dim_id"]
$have_dID = true;
}
?>
<script>
function someProcessingFunction() {
// Make some ajax call based on value of #dim_id select box...
// Add options from ajax call to #cap_1
// Enable #cap_1
}
</script>
<select id="dim_1" name="dim_1" onChange="someProcessingFunction()">
<?php
if ($have_dID) {
?>
<option value="<?php echo $dID; ?>">Parent option</option>
<?php
}
?>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
</select>
<select id="cap_1" name="cap_1" disabled="disabled">
<!-- Options to be filled by function -->
</select>
<?php
if ($have_dID) {
?>
<script> someProcessingFunction() </script>
<?php
}
?>