从下拉列表中获取所选项目并将其保存到php变量
我在php文件中有一个下拉列表,没有表单标签从下拉列表中获取所选项目并将其保存到php变量,php,javascript,jquery,ajax,drop-down-menu,Php,Javascript,Jquery,Ajax,Drop Down Menu,我在php文件中有一个下拉列表,没有表单标签 print "<select id="animal" onchange="getSelectedItem(this.value)"> <option value = "Dog"> Dog </option> <option value = "Cat"> Cat </option> </select>"; 和一个可变的$selfanimal 和一个javascript函数 fun
print "<select id="animal" onchange="getSelectedItem(this.value)">
<option value = "Dog"> Dog </option>
<option value = "Cat"> Cat </option>
</select>";
和一个可变的$selfanimal
和一个javascript函数
function getSelectedItem(opt){
//$selAnimal = opt <- how do i do this?
}
我尽可能不希望页面重新加载,因此我避免将其放入表单中,并按我的选择提交。我无法使$.post方法起作用。我知道这不能直接完成,因为php是服务器端,javascript是客户端。
我还考虑将所选值放入隐藏的组件span或其他内容中,并从中获取值。但我不知道如何从组件中获取它。我也见过AJAX或jquery的使用,但我的知识还不够渊博
我需要将这个值保存到php变量中,因为我将使用它作为第二个下拉列表中选项的基础。例如,如果我选择狗,下拉列表中会有狗的品种作为选项
我花了好几天的时间到处寻找可能的解决方案。非常感谢您的帮助。谢谢大家! 同一个文件不能使用该变量,因为PHP在JS启动之前声明了它的所有变量。但是,您可以简单地将用户重定向到变量可用的新文件 使用类似以下内容:
function getSelectedItem(opt){
location.href = location.href + "?selAnimal=" + opt;
}
$selectedAnimal = $_GET["selAnimal"];
if($selectedAnimal == "dog"){
// Whatever you want to do now
}
在PHP中,现在可以使用selAnimal变量显示不同的内容,如:
function getSelectedItem(opt){
location.href = location.href + "?selAnimal=" + opt;
}
$selectedAnimal = $_GET["selAnimal"];
if($selectedAnimal == "dog"){
// Whatever you want to do now
}
更好的方法是将POST与表单一起使用,但这对您来说也应该很好。以下是解决方案
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script>
$(document).ready(function(){
$('#animal').change(function(){
$.post('loadbreeds.php', { animal:$('#animal').val() },
function(data){
$('#breedList').html(data);
});
});
});
</script>
<form method="post" >
<div id="animalList">
<select id="animal" name="animal">
<option value="">--Select--</option>
<?php if (!empty($animals)) { foreach ($animals as $value) { ?>
<option value="<?php echo $value['animalKey']; ?>"><?php echo $value['animalName']; ?></option>
<?php }} ?>
</select>
</div>
<div id="breedList">
<select id="breed" name="breed">
<option value="">--Select--</option>
</select>
</div>
<input type="submit" value="Submit" />
</form>
loadbrides.php的代码
$animalKey = $_POST['animal'];
$breeds = selectByKey($animalKey); // code for selecting breeds
<select id="breed" name="breed">
<option value="">--Select--</option>
<?php if (!empty($breeds)) { foreach ($breeds as $value) { ?>
<option value="<?php echo $value['breedKey']; ?>"><?php echo $value['breedName']; ?></option>
<?php }} ?>
</select>
请尝试以下操作,以重新生成第二个下拉列表:
我也可以使用纯Javascript版本,但代码要多一些。是的,我试过一些,需要重新加载或提交,但正如我所说,我希望避免使用。我也试过邮寄。但我不能让它工作。我以前使用$post从图表中导出图像,效果很好。但是这一次,我无法让它工作;$selname=$_POST[name];但这不起作用,这里有一些链接,谢谢。我会试试那个。我试过jquery,它工作得非常好!谢谢,谢谢!我以前试过这个。但我认为这会将页面重定向到同一页面,但会在url上附加选项。@user974227是的,这就是它的作用。为什么这对你不起作用?是的,但我不需要重新加载整个系统page@user974227如果你想在PHP中获得你的价值,你必须这样做。如果可能,您可以尝试使用JS解决方案来构建新选项。