单击后如何加载选择下拉菜单

时间:2018-01-03 18:50:17

标签: javascript php jquery html wordpress

我的WordPress中有一个带有7.000 itens的选择框,我希望这些选项仅在用户点击后加载,因为性能问题。我不知道该怎么做,因为生成我所拥有的选项的代码是HTML和PHP的混合。

<select class="chosen" name="tag-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
    <option value="#">Select an artist</option>
    <?php dropdown_tag_cloud('number=0&order=asc'); ?>
</select>

我可以找到我在functions.php文件中包含的主要功能here。如何在用户点击后加载选项?

1 个答案:

答案 0 :(得分:1)

PHP脚本运行后,它会将输出发送到客户端计算机。因此,除非您对另一个文件使用AJAX调用,否则在客户端单击时无法调用该函数。

所以你需要将函数移动到它自己的文件中。也许:

  

GET-SELECT-options.php

将你的函数放在那里,然后在顶部调用该函数作为echo:

<?php

     echo dropdown_tag_cloud('number=0&order=asc');

     function tag_cloud($parameters){
         return $stuff;
     }
?>

在主文件中,您可以创建一个ajax调用来获取结果。使用JQuery

<script>
    $('select[name=tag-dropdown]').click(function(){
        $.get('select-options.php', {}, function(r){
            $('select[name=tag-dropdown]').append(r);
        });
    });
</script>

我会添加一个加载动画,以便用户知道等待。

如果需要将参数传递给函数,可以在ajax调用中执行:

$.get('select-options.php', {'number':3, 'order':'asc'}, function(r){});

然后在PHP文件中,您可以使用$ _GET来检索参数

$number = $_GET['number'];
$order = $_GET['order'];

修改

您也可以在同一页面上使用PHP输出填充JS中的变量,然后在点击时更新选择选项。

重要“dropdown-tag-cloud”函数的输出必须是我编写工作方式的字符串: (example: <option value="asdf">tag</option><option value="qwer">tag</option>) < / p>

<script>
    var options = '<?php echo dropdown_tag_cloud(0,"asc")'; ?>;

    $('select[name=tag-dropdown]').click(function(){
        $('select[name=tag-dropdown]').append(options);
    });
</script>