Как передать данные из выпадающего списка на мой контроллер - PullRequest
0 голосов
/ 25 апреля 2019

В настоящее время я работаю над таблицей данных, в которой для каждого элемента отображается раскрывающееся меню, в котором можно выбрать параметры для изменения статуса элемента в БД. Я запускаю функцию с помощью кнопки отправки, которая показывает текущее состояние элемента в БД (отмечено или не отмечено). Моя проблема в том, что передача данных (значение из выпадающего списка) на мой контроллер не работает. Даже попытка напечатать запрос с dd($request->all()) мне ничего не показывает.

Маршруты

Route::any('/mark_as_important/{id}', 'ServiceController@markAsImportant')->middleware('all_customer');

Контроллер

public function markAsImportant(Request $request, $id){
    try{
        dd($request);
        DB::table('tubes')->where('TubeID',$id)->update(['LOG_important'=>1]);
        return 'true';
    }catch(\Exception $e){
        return 'false';
    }
}

View

        <button type='submit' id="button_{{$row['TubeID']}}" onclick="markAsImportant({{$row['TubeID']}})"
        @if ($row['LOG_important'] == 1)
        disabled>Marked Important</button>
        @elseif ($row['LOG_important'] == 2)
        disabled>Marked RnD</button>
        @else
        >Mark as</button>
        <select name="flags" class="form-control" data-id='flag_field'>
          @php
          $sql = DB::table('flags')->select('id', 'Flag_Name')->get();
          @endphp
          @foreach ($sql as $row)
          <option value='{{$row->id}}'>{{$row->Flag_Name}}</option>;
          @endforeach
        </select>
<script type="text/javascript">

  function markAsImportant(id) {
    $("#button_" + id).attr('disabled', 'true');
    var flag_id = $(this).data("id")

    $.get("/mark_as_important/" + id, function(success) {
      if (success == 'true') {
        $("#button_" + id).html('Marked');
      // } else {
      //   alert('Something went wrong');
      }
    });
  }

Ответы [ 2 ]

2 голосов
/ 25 апреля 2019

, чтобы использовать jquery для события щелчка и изменения, сделайте $('#button_' + id).html(), вы можете попробовать что-то вроде

$(`#button_${id}`).on('click', function() { 
  $(this).prop('disabled', true);
  var flagId = $('.form-control').data('id');

  console.log({ flagId: flagId, buttonDisabled: $(this).prop('disabled') }) 
  // make sure something is actually coming through with the console.log()

  $.ajax({
   url: `/mark_as_important/${id}`,
   type: 'GET',
   dataType: 'json', // assuming its json
   success: function(result) {
     $(`#button_${id}`).html('Marked');
   },
   error: function(err) {
     console.log(err);
   }
  })
});
1 голос
/ 25 апреля 2019

Вы делаете запрос на получение любого маршрута, идентификатор указан в URL, чтобы вы могли получить его следующим образом:

$tubeId = request()->route('id');

Но я бы определил маршрут как маршрут получения и получил данные, используя параметры маршрута

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...