我的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。如何在用户点击后加载选项?
答案 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>