我有一个选择框,其中包含PHP变量的选项。如果选择option1,则第二个选择框应该获得除选择option2之外的其他选项。我读到我可以用javascript做到这一点,但我不知道如何将php变量插入到javascript中?有人有任何想法吗?
答案 0 :(得分:1)
在这里,我的答案前一段https://stackoverflow.com/a/20271096/2733184恭喜解释它是如何运作的
如何只使用PHP而不使用AJAX?
因为PHP驻留在服务器上。您必须分两个阶段分解表单提交过程:
此限制意味着您的表单仍然是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来做。但是如果你需要服务器上的东西,你就必须去寻求它。客户端必须启动与服务器的通信,然后服务器将下载第二个下拉列表的新信息。
重新获得这一切,
但是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相同,......
为了我糟糕的英语而讽刺。