首页 > 解决方案 > 如何在每个 foreach laravel 中显示不同的 ajax 响应?

问题描述

我使用 ajax 根据产品的重量、产品的原产地 (city_origin) 以及产品的交付地点来显示每个商店的运费。这就是它的样子. 这是脚本:

$('select[name="kurir"]').on('change', function(){
let origin = $("input[name=city_origin]").val();
  let destination = $("select[name=alamat]").val();
  let courier = $("select[name=kurir]").val();
  let weight = $("input[name=weight]").val();
  if(courier){
    jQuery.ajax({
      url:"/origin="+origin+"&originType=city&destination="+destination+"&destinationType=city&weight="+weight+"&courier="+courier,
      type:'GET',
      dataType:'json',
      success:function(data){
        $('select[name="layanan"]').empty();
        $.each(data, function(key, value){
          $.each(value.costs, function(key1, value1){
            $.each(value1.cost, function(key2, value2){
              $('select[name="layanan"]').append('<option value="'+ key +'">' + value1.service + '-' + value1.description + '-' +value2.value+ '</option>');
            });
          });
        });
      }
    });
  } else {
    $('select[name="layanan"]').empty();
  }
});

这很好用,但是当我想使用 foreach 显示多个商店时,它只适用于第一个商店,并且将相同的运费迭代到其他商店,像这样. 这是视图部分中显示商店的代码:

<div style="display: none">
   {{ $weight = 0 }}
</div>
                @foreach ($barangs as $key=>$value)
                  <div class="card" style="margin-top:10px;">
                    <div class="card-body">
                      <div class="row">
                          <div class="col-12">
                            @php
                              $tokos = collect($toko)->where('id','=', $key);
                              $tok = json_decode($tokos, true);
                            @endphp
                            @foreach ($tok as $tk)
                              <input style="display: none" type="text" value="{{ $tk['kota'] }}" class="form-control" id="city_origin" name="city_origin">
                              <p style="font-weight:bold; color:#00463B"><i class="icon-basket"></i>&nbsp; {{ $tk['nama'] }}</p>
                            @endforeach

                          </div>
                      </div>
                          @foreach ($value as $row)
                      <div class="row" style="margin-top:30px;">
                          <div class="col-2">
                            <img src="{{$row['foto1']}}" alt="" style="width:70px;">
                          </div>
                          <div class="col-5">
                            <p>{{$row['nama']}}</p>
                          </div>
                          <div class="col-2">
                            <p>{{$row['pivot']['jumlah']}}</p>
                          </div>
                          <div class="col-3">
                            <p>Rp. {{ number_format($row['pivot']['jumlah']*$row['harga'])}}</p>
                            <div style="display: none">{{$weight += ($row['berat']) }}</div>
                            <input style="display: none" type="text" value="{{$weight}}" class="form-control" id="weight" name="weight">
                          </div>
                      </div>
                          @endforeach

                    </div>
                    <div class="card-body">
                        <div class="row">
                          <div class="col-12">
                            <div class="input-group mb-3">
                              <select class="form-select" name="kurir" id="kurir">
                                <option value="">Pilih Kurir</option>
                                <option value="jne">JNE</option>
                                <option value="tiki">TIKI</option>
                                <option value="pos">POS</option>
                              </select>
                            </div>
                          </div>
                        </div>
                        <div class="row">
                          <div class="col-12">
                            <div class="input-group mb-3">
                              <select class="form-select" name="layanan" id="layanan">
                                <option value="">Pilih Layanan</option>
                              </select>
                            </div>
                          </div>
                        </div>
                    </div>
                </div>

这是您可以获得“alamat”值的地方:

<select class="form-select" name="alamat" aria-label="Default select example">
                        @foreach ($alamat[1] as $row)
                          <option value="{{$row['kota']}}">{{$row['nama_alamat']}} - {{$row['nama']}}</option>
                        @endforeach
</select>

我应该怎么做才能得到不同的反应?这样我就可以为每个商店选择送货服务。我是javascript的新手,您的任何建议都会非常有帮助,谢谢。

标签: javascriptphpjquerylaravel-5

解决方案


推荐阅读