Как получить индекс значения массива внутри foreach при нажатии кнопки в laravel, используя jquery - PullRequest
0 голосов
/ 03 мая 2019

Я хочу получить индекс значения массива, когда я нажимаю кнопку внутри цикла в блейде с jquery, но когда я нажимаю кнопку и отправляю в контроллер, переменная всегда равна нулю

Код в лезвии

<form  class='form-horizontal' method='post' id="form" enctype="multipart/form-data" action={{CRUDBooster::mainpath('inputForm')}}>
  {{ csrf_field() }}
  <input type='hidden' name='return_url' value={{url('admin/list_kodefikasi_pengujian')}}/>
  <input type='hidden' name='ref_mainpath' value={{url('admin/list_kodefikasi_pengujian')}}/> 
  .......   
  <tbody>
@foreach($detilKodefikasi AS $row)
  <tr>
      <td>{{ $row->jenis_pnpb }}</td>
      <td>{{ (@$row->varietas!='')?$row->varietas:'-' }}</td>
      <td>{{ (@$row->kode_sampel!='')?$row->kode_sampel:'-' }}</td>
      <td>{{ (@$row->lot!='')?$row->lot:'-' }}</td>  
      <td>{{ $row->val_str }}</td>
      <input type="hidden" name="id_jenisuji[]" value="{{$row->fid_jenisuji}}">
      <input type="hidden" name="jenis_pnpb[]" value="{{$row->jenis_pnpb}}">
      <input type="hidden" name="varietas[]" value="{{$row->varietas}}">
      <input type="hidden" name="kode_sampel[]" value="{{$row->kode_sampel}}">
      <input type="hidden" name="lot[]" value="{{$row->val_str}}">
      <td><input type="submit" name="submit" value='Create' id="btn-save" class='btn btn-success btn-save'></td>
 </tr>
@endforeach
</tbody>
........
</form>

И у меня есть JQuery

$("#form").on('submit',(function(e){
            var indexIdJenisUji = $(this).closest("tr").find("input[name='id_jenisuji']").val();
            e.preventDefault();
            $.ajax({
                url: "{{url('admin/list_kodefikasi_pengujian/inputForm')}}",
                type: "POST",
                data:  form.serialize()+"&idJenisUji="+indexIdJenisUji },
                success : function(data){
                    function() {
                      window.location = "{{url('admin/list_kodefikasi_pengujian')}}";
                  }
                },
                error: function(data){
                    alert(data.error->first());
                }           
            });
        }));

В контроллере

function inputForm()
{
    $this->cbLoader();
    $request = Request::all();

    $idJenisUji = $request['idJenisUji'];
    var_dump(idJenisUji);
}

Всегда возвращать ноль, но когда я создаю новую функцию и оповещаю пользователя, возвращается значение

$(document).ready(function() {
$("#submit").click(function(){
    var indexIdJenisUji = $(this).closest("tr").find("input[name='id_jenisuji']").val();
    alert(indexIdJenisUji);
   }); 
});

Итак, если я укажу var indexIdJenisUji = $ (this) .closest ("tr"). Find ("input [name = 'id_jenisuji']"). Val (); при отправке формы и объединении с form.serialize (), значение всегда возвращает ноль

1 Ответ

1 голос
/ 03 мая 2019

Вашему селектору нужны скобки []

 var indexIdJenisUji = $(this).closest("tr").find("input[name='id_jenisuji[]']").val();

или

var indexIdJenisUji = $(this).closest("tr").find("input[name^='id_jenisuji']").val();
...