我的页面中有select标签,而选项来自数据库。
当我运行JS代码时,我收到了需要传递的新数组,但旧数组除外(在新数组中,我收到了新选项)
<select name="category_id" class="form-control custom-select" id="variant_colour">
<option selected>Select variant...</option>
@foreach($attributes_colour_selected as $variant)
<option value="">{{$variant->attributes_colour}}</option>
@endforeach
</select>
<script>
$('#variant_model').change(function(){
var value = $('select#variant_model').val();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type:"POST",
url: "showVariantModel",
data: {value:value},
success: function(data){
var attr = 'I don't know what to pass here';
$('#variant_colour:last').append(attr);
}
})
});
</script>
您能建议更改每个参数的最简单方法吗? 新变量来自Controller。 当我这样写字符串时:
<script>
var attr = '@foreach($attributes_colour_selected as $variant)'+
'blablabla'+
'@endforeach';
</script>
什么都不起作用...
答案 0 :(得分:1)
您可以简单地执行一个foreach
,因为您还没有解释返回的数组类型,所以我简单地假设它是一个{key: value}
类型的数组,因此在成功函数中
success: function(response){
let select = document.querySelector('#variant_colour')
select.innerHTML = '' //if you want to remove previous options
response.forEach((op)=>{
select.innerHTML += `<option value=${op.id}>${op.value}</option>`
})
}
此外,您还需要在刀片的选项值属性中提供一些值
<option value="{{ $variant->id }}">{{$variant->attributes_colour}}</option> //set some value example id
答案 1 :(得分:0)
我认为您应该使用js循环数据。我不知道返回ajax调用的结构如何,但是您可以使用jquery尝试类似的方法:
<script>
$('#variant_model').change(function(){
var value = $('select#variant_model').val();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type:"POST",
url: "showVariantModel",
data: {value:value},
success: function(data){
$.each(data, function (key, value) {
$('#variant_colour').append("<option value='" + key + "'>" + value + "</option>");
});
}
})
});
</script>