从下拉列表中获取所选项目并将其保存到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

我在php文件中有一个下拉列表,没有表单标签

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解决方案来构建新选项。