【问题标题】:Put new data to blade @foreach in Laravel 5.8在 Laravel 5.8 中将新数据放入刀片 @foreach
【发布时间】:2019-09-25 13:17:24
【问题描述】:


我的页面中有选择标签,选项来自数据库。
当我运行 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>	

您能否建议更改 foreach 参数的最简单方法。 新变量来自控制器。 当我这样写字符串时:

<script>
var attr = '@foreach($attributes_colour_selected as $variant)'+
          'blablabla'+
          '@endforeach';
</script>

没有任何效果...

【问题讨论】:

    标签: javascript laravel laravel-blade


    【解决方案1】:

    我认为你应该使用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>
    

    【讨论】:

      【解决方案2】:

      你可以简单地做一个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
      

      【讨论】:

      • 非常感谢。你忘了把)放在最后:` }) }
      猜你喜欢
      • 2017-01-02
      • 1970-01-01
      • 2017-06-20
      • 2016-09-19
      • 2019-10-01
      • 2016-06-29
      • 2018-04-04
      • 2021-10-19
      • 1970-01-01
      相关资源
      最近更新 更多