使用php动态更改选择选项


dynamically change select options with php

好的,所以我在PHP中有这个函数,它获取一个属性并返回一个数组。类似这样的东西:

function getProvinces($countryID){
return arrayWithProvinces($countryID);}

每次父选择更改时,函数getProvince()都应使用新ID执行,并且arrayWithProvince应作为选项包含在子选择中。

正如我在某处发现的那样,我正在使用jquery来处理事件。我需要做这样的事情。

            $("#selectCountry").change(function() {
                var parent = $(this).val(); //get option value from parent 
                var prov = <?php echo json_encode($pagina->getProvinces( <PARENT> )); ?>;
                list(prov);

我的问题是,我不知道如何告诉getProvisions($countryID)php函数哪个是父项的新值。

提前谢谢。

您应该为此使用javascript,以便用动态内容刷新部分页面。下面是一个使用jquery的ajax函数的示例。当id为#parent_select的select发生更改时,您将调用php脚本,并将返回的数据(示例中的子select的html)附加到所需的div中。

Javascript部分应该是这样的:

$("#parent_select").change(function() {
$.ajax({
    url: "your_script.php?cid="+$(this).val(),
      success: function(html){
        $("#child_select_container").append(html);
      }
    });
});

your_script.php代码看起来像:

<?php
function getProvinces($countryID){
return arrayWithProvinces($countryID);}
$countryID=(int)$_GET['cid'];
$provinces=getProvinces($countryID);
echo '<select id="child_select">';
foreach($provinces as $key=>$province){
echo '<option id="'.$key.'">'.$province.'</option>';
}
echo '</select>;

我还没有测试这个例子。这只是一个基本的例子。你应该可以从这里一路工作。但如果你有任何问题,请告诉我。

据我所知,如果不重新加载整个页面,就无法执行该函数(我的意思是php应该重新编译它并将其传递给客户端)。

为此,您应该只使用JavaScript。将arraylist存储在JS代码中,并在表单提交时对其进行一次验证(只是为了确保)。

您需要向服务器发出Ajax请求。

这样看:Javascript/jQuery在客户端(web浏览器)上运行,PHP在web服务器上运行。

因此,为了在浏览器(jQuery)和服务器(PHP)之间进行通信,您需要发出Ajax请求。

jQuery有一个可以使用的ajax函数,你最好对这个主题进行一些研究,因为ajax是你一直在使用的东西,了解它的工作原理至关重要。