【问题标题】:get array of arrays by javascript in laravel在laravel中通过javascript获取数组数组
【发布时间】:2018-08-10 09:49:52
【问题描述】:

我尝试在我的类别下products 使用get list of options到目前为止我可以做到

但问题是,如果我选择不止一个类别的选项 第一个类别将返回。

DEMO

代码

functions

// load my page
public function create()
{
  $categories = Category::all();
  $statuses = Status::all();
  return view('admin.landings.create', compact('categories', 'statuses'));
}


//get option of categories and return it as json
public function getlandingsubspecifications($id)
{
  $specifications = DB::table('products')
  ->where('category_id', $id)
  ->join('product_subspecification', 'product_subspecification.product_id', '=', 'products.id')
  ->join('subspecifications', 'subspecifications.id', '=', 'product_subspecification.subspecification_id')
  ->groupBy('subspecifications.id')
  ->get();

  return response()->json($specifications);
}

JavaScript

<!-- get subspecifications -->
<script type="text/javascript">
  $(document).ready(function() {
    $('select[name="category_id"]').on('change', function() {
      var subcategoryID = $(this).val();
      if(subcategoryID) {
      $.ajax({
        url: '{{ url('admin/getlandingsubspecifications') }}/'+encodeURI(subcategoryID),
        type: "GET",
        dataType: "json",
        success:function(data) {
            $('select[name="spacefication_id"]').empty();
            $.each(data, function(key, value) {
                  $('select[name="spacefication_id"]').append(
                        "<option class='form-control' value='"+ value['id'] +"'>"+ value['title'] +"</option>");
            });
        }
      });
      }else{
        $('select[name="spacefication_id"]').empty().append("<option value='' selected>Select</option>");
      }
    });
  });
</script>

HTML

<div class="col-md-12">
  <div class="col-md-6">
    {{Form::label('category_id', 'Categories')}}
    <select class="form-control tagsselector" name="category_id" multiple="multiple">
     <option value="">Select Categories</option>
     @foreach($categories as $category)
       <option value="{{$category->id}}">{{$category->title}}</option>
     @endforeach
    </select>
   </div>
   <div class="col-md-6">
    {{Form::label('spacefication_id', 'Spacefications')}}
    <select class="form-control tagsselector" name="spacefication_id" multiple="multiple">
      <option value="">Select Spacefications</option>
    </select>
  </div>
</div>

更新

my network result on selecting categories

【问题讨论】:

    标签: javascript php json ajax laravel


    【解决方案1】:

    将 id 数组传递给 whereIn 函数

    public function getlandingsubspecifications($arrayOfIds)
    {
        $specifications = DB::table('products')
               ->whereIn('category_id',[$arrayOfIds])
            //rest of code
    }
    

    【讨论】:

    • 还是一样,没什么不同。
    • 您是否传递了类别 ID 数组??/
    • 应该确定哪个部分的 id dd
    • 在求getlandingsubspecifications函数做dd($arrayOfIds)
    • 不,我将您的代码更改为我的$id,我认为命名没有太大不同
    猜你喜欢
    • 2019-07-05
    • 2021-10-31
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 2013-10-13
    • 2020-01-08
    • 2016-06-17
    • 1970-01-01
    相关资源
    最近更新 更多