我一直在寻找相当长的一段时间,但我仍然没有找到一个合适的答案。我正在尝试根据用户从选择框中选择的值来过滤我的结果。但是,selectbox是从数据库中填充的,并且它的长度会有所不同。 第一个选择条目将为空,因此将显示所有匹配值。但是当从选择框中选择了不同的值时,所有不匹配的主题都需要消失。最简单的方法可能是使用Ajax,但我现在无法理解它如何...
我正在使用prestashop进行开发,因此该项目的前端使用了smarty。所以常规的PHP方法无法解决它。
因此,php函数基本上将相关项的信息带入数组,然后将其推送到smarty进行显示。 (在forach中)
像这样:
{foreach from=$projectsArray key=id item=projectOpen}
{/foreach}
从那里访问所有信息并在数组内构建结构非常容易。
这是我当前的ajax代码,用于在选择框更改时执行.php文件
选择框:
<select name="projects" id="projects" class="projects" size="{$project_options|@count eq 1}">
<option value="blank" selected="selected">All productsSelected</option>
{html_options values=$project_values output=$project_options}
</select>
再次,select-box特定于smarty,它只是填充数据库中的列表。
Ajax代码:
<script type="text/javascript">
$(document).ready(function()
{
$("#projects").change(function()
{
var id=$(this).val();
var dataString = 'id='+ id;
$.ajax
({
type: "POST",
url: baseDir + 'modules/blockprojekt/ajax-product_view_all.php',
data: dataString,
cache: false,
success: function(html){
$("#rooms_view_container").html(html);}
});
});
});
</script>
在ajax文件中我正通过
访问它 $_POST['id']
但接下来我该怎么办呢?是否更容易通过某些执行的查询更改数组值并替换以前的查询的整个内容,或者我可以根据selectbox值以某种方式过滤它?
BR的
答案 0 :(得分:0)
我实际上试图通过绕山来实现我的解决方案。
由于forach项目连接到数据库中的selectbox项目,我可以使用简单的jquery来完成这个技巧并过滤它们。
这是代码。也许有人发现它在将来很有用。这显而易见的原因在于forach循环。
<script type="text/javascript">
$(function(){
$('#projects').change(function() {
if($(this).val() == 'blank'){
$('.project_room_{$projectOpen.id_projekt_rooms}').hide();
$('.rooms_view_container').show();
}
else {
$('.project_room_{$projectOpen.id_projekt_rooms}').hide();
var selectVal = $('#projects :selected').val();
$('.project_room_'+selectVal).show(); }
});
});
</script>
BR的