PHP选择框相互依赖

时间:2013-12-16 09:11:08

标签: javascript php html forms

我有一个选择框,其中包含PHP变量的选项。如果选择option1,则第二个选择框应该获得除选择option2之外的其他选项。我读到我可以用javascript做到这一点,但我不知道如何将php变量插入到javascript中?有人有任何想法吗?

4 个答案:

答案 0 :(得分:1)

在这里,我的答案前一段https://stackoverflow.com/a/20271096/2733184恭喜解释它是如何运作的

编辑:来自作者的新信息

  

如何只使用PHP而不使用AJAX?

因为PHP驻留在服务器上。您必须分两个阶段分解表单提交过程:

  1. 第一个表单是一个shell,它只提供一些信息和第一个选择元素
  2. 第二种形式是实际提交,第一次提交硬编码的结果
  3. 此限制意味着您的表单仍然是2个静态HTML片段,没有交互性,从我的角度来看,您想要交互性。

    我的推荐是你不使用这种方法。对于这样的情况,Ajax是 The Best 候选者。

答案 1 :(得分:1)

如果您完全拥有100k的数据,它可以作为json数组包含在页面中(使用来自php的json_encode)然后您可以在javascript中实现切换逻辑。

如果你有更多,或者你的记录来自不可列出的来源(比如来自大事的查询),你可以在第一次选择之后进行ajax调用,然后再次有更多的选择去on:将第二个select的内容加载到json中,或者(也许这对你来说更方便)使用像

这样的东西
$("#mydiv").load("selects.php?first=3")

加载下一个选择标记的整个html。这为您提供了额外的能力,不仅可以选择,而且可以根据用户首先选择的内容进行任何类型的下一级选择。

没有AJAX:

除了我在第一段中提出的建议:),是的,有办法避免使用AJAX。但是你为什么要这样?......类似于AJAX的东西是iframe技术,你可以使用它,这意味着你在一个隐藏的iframe中调用一个脚本并做一个

<script> parent.doSomething(myNewData); </script>

打电话给它。但这基本上是相同的原则。你需要来自服务器端的信息,对吗?...如果你不这样做,当然你只能用Javascript来做。但是如果你需要服务器上的东西,你就必须去寻求它。客户端必须启动与服务器的通信,然后服务器将下载第二个下拉列表的新信息。

重新获得这一切,

  1. 您可以将所有必要的部分与您的页面一起下载
  2. 您可以稍后使用AJAX进行下载,
  3. 您可以稍后使用iframe下载。
  4. 您可以......好吧,您可以使用运行时插入的脚本标记请求信息。
  5. 但是4是黑暗的一面。 1-2-3将很好地工作。

答案 2 :(得分:-1)

一个好方法应该是使用AJAX。

这也可以通过PHP完成。

AJAX方法:

通过首次下拉更改调用AJAX事件。

将第一个下拉列表的选定值传递给AJAX。

后端PHP代码将返回<select>下拉的HTML。

伪码:

<select name="sel" id="sel" onchange="populateSecondDropDown()">
<option value="1">Test</option>
</select>

<div id="sel2Container">
<select name="sel" id="sel"></select>
</div>

<script>
function populateSecondDropDown() {
 $.ajax({
  // Expect a `mycustomtype` back from server
  url: 'backend.php?sel='+$("#sel").val(),
  dataType: 'json',
  success: function (data) {
   $("sel2Container").html(data.sel2);
  }
});
}
<script>

PHP后端:

if (isset($_POST['sel'])) {
 //.. Your logic to populate second drop down.
 $dropDown = '<select name="sel2" id="sel2">
<option value="1">Test 2</option>
</select>';
 echo json_encode($dropDown);
}

答案 3 :(得分:-1)

PHP是服务器端语言,Javascript是客户端语言。

你不能将php变量插入到javascript中。 AJAX是真正的方式。您需要使用javascript / AJAX向服务器发出请求,使用selectbox 1中的值在第一次选择后加载box2的值。与box3,4相同,......

为了我糟糕的英语而讽刺。