【发布时间】:2025-12-07 16:30:01
【问题描述】:
我正在尝试使用 php 和 js(ajax) 构建一个 crud 操作,并且我有一些过滤器,用户可以向一个类别添加更多过滤器在添加操作时效果很好,但是在编辑时我使用 ajax 和点击是从数据库中检索并填充输入,但在 select2 上我检索数据如下:
var main_id = $(this).attr("id");
$.ajax({
url:"<?php echo $site_url;?>/actions/get_filters.php",
method:"POST",
data:{main_id:main_id},
dataType:"json",
success:function(data){
var fl = [];
var nr = [];
$.each(data, function(i, field){
fl.push(field.fil_opt+","+field.txt_fil);
nr.push(field.id);
});
for (i = 0; i < nr.length; ++i) {
$('#filters_cat_update > option').each(function() {
$(this).attr('data-id', nr[i++]);
});
}
$('#filters_cat_update').val(fl);
$('#filters_cat_update').trigger('change'); // Notify any JS components that the value changed
}
});
我检测到何时删除这样的选项:
//remove from edit options
$('#filters_cat_update').on('select2:unselecting', function (e) {
console.log(e.params.args.data.id);
});
我的 html 看起来像这样:
<div class="col-lg-6 col-md-12 col-sm-12">
<select class="js-example-basic-multiple custom-select mr-sm-2" name="filters_update[]" multiple="multiple" id="filters_cat_update">
<?php
$sqlf = mysqli_query($conn, "SELECT * FROM filtre WHERE vizibil=1 ORDER BY pozitie");
while ($rf = mysqli_fetch_assoc($sqlf)) {?>
<option data-id="" value="<?=$rf['id'];?>,<?=$rf['nume'];?>"><?=$rf['nume'];?></option>
<?php } ?>
</select>
</div>
我想要做的是,当我单击一个选项(例如“颜色”)以使用 ajax 并从表 mysql 中删除时,我为每个类别保存了过滤器并将其删除。 正如您在我的选项中看到的那样,我将过滤器的 id 和过滤器的名称连接起来,这些过滤器来自另一个用户可以创建过滤器的表。 提前谢谢你。
【问题讨论】:
-
你可以在
$('#filters_cat_update').on('select2:unselecting', function (e) {..下调用你的ajax。你试过吗? -
您的解决方案正在获得我的价值,例如 。每个选项都有 data-id 和他在数据库中的唯一 id,我想以某种方式将 data-id 值解析为 ajax 到 php,以从 mysql 中删除我从 select2 输入中删除的内容。
标签: php jquery mysql ajax jquery-select2