繁体   English   中英

使用jQuery从PHP关联数组获取值

[英]Getting values from a PHP associative array using jQuery

我有一个PHP选择元素,它在PHP中从数组生成,如下所示

$countries = array(
    array('iso' => 'AF', 'name' => 'Afghanistan',  'key' => 'Red'),
    array('iso' => 'AX', 'name' => 'Åland Islands','key' => 'Yellow'),
    array('iso' => 'AL', 'name' => 'Albania',      'key' => 'Blue')
);

$select = '<select id="country_select" onchange="countryfind()">';
foreach($countries as $country) {
    $select .= '<option value="'.$country['key'].'">'.$country['name'].'</option>';
}
$select = '</select>';

return $select;

选择框使用一个小的javascript函数来显示所选国家/地区的国家/地区代码:

function countryfind(){
    jQuery('#countrykey').text(
         jQuery('#country_select option:selected').val()
)};

我现在想使用该键与另一个包含该国家/地区信息的PHP数组进行接口,并在#countrykey div中而不是所选值中显示该国家/地区:

$si_federations = array(
    'Red'   => array('name'=>'A Red Country', 'url'=>'http://www.redcountry.com'),
    'Blue'   => array('name'=>'A Blue Country', 'url'=>'http://www.soroptimisteurope.org'),
);

这是可以轻松实现的,还是我的方法完全错误?

您在这里的路线正确。 所以,这就是如何让它做您想要的

在您的<script>块中,我们要以JSON输出该数组

var federations = <?php echo json_encode($si_federations); ?>;

现在,当您运行countryfind我们想从该对象中提取值并显示它。 因此,让我们修改您的功能

function countryfind(){
    var fed;
    var selected = jQuery('#country_select option:selected').val();
    if(federations[selected] !== undefined) fed = federations[selected];
    else fed = {"name":"Default Name", "url":""}; //placeholders if it's not defined
    jQuery('#countrykey').text(
         selected + ' - ' + fed.name + ' ' + fed.url;
)};

我不知道您希望它如何显示(为简单起见,我只是将其转储为文本),但这会为您提供所需的数据,因此您可以从那里获取它

您必须将php关联数组转换为js对象,以供进一步参考。 由于php在服务器上运行,并且您正在客户端执行所有操作,因此在页面加载后,您的php毫无用处。 您需要js var,以便您可以进一步引用它。 像这样:

<script>
var countries = [];
var country = {};
<?php foreach($si_federations as $k => $country): ?>
    <?php foreach($country as $key=>$val): ?>
        country['<?php echo $key; ?>'] = '<?php echo $val; ?>';
    <?php endforeach; ?>
    countries['<?php echo $k; ?>'] = country;
<?php endforeach; ?>

function countryfind(){
     var keyVal = jQuery('#country_select option:selected').val();
     jQuery('#countrykey').text('name: '+countries[keyVal]['name']+' url: '+countries[keyVal]['url']);
 }

</script>

希望对您有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM