Заменить указанные c данные в таблице идентификатором на jquery - PullRequest
0 голосов
/ 07 мая 2020
  1. В моем проекте Laravel у меня есть таблица, в которой данные должны обновляться без перезагрузки страницы в определенной строке c с jquery. Данные должны быть обновлены в строке:
....
  <tbody>
  @foreach ($tasks as $task)
    <tr>
      <td>{{$task->id}}</th>
      <td>{{$task->project_id}}</td>
      <td>{{$task->t_title}}</td>
      <td>
      <a href="#" class="editbtn btn btn-success ">EDIT </a>
      <a class="btn btn-success">DELETE </a> </td>
      </tr>
  @endforeach
Данные берутся оттуда для редактирования всплывающей формы:
<form id="editFormID">
 <div class="modal-body">   
  @CSRF
  {{method_field('PUT')}}
  <input type="hidden"  name="id" id="id">
  <div class="form-group">
    <label>Project ID</label>
    <input type="text" name="project_id" id="project_id" class="form-control">
  </div>
  <div class="form-group">
    <label>Title</label>
    <input type="text" name="t_title" id="t_title" class="form-control"  > ...
Данные берутся от 1 до 2 с помощью jquery:
$(document).ready(function () {
  $('.editbtn').on('click', function() {
    $('#studenteditmodal').modal('show');

$tr = $(this).closest('tr');
var data = $tr.children("td").map(function() {
  return $(this).text();
}).get();
console.log(data);
$('#id').val(data[0]);
$('#project_id').val(data[1]);
$('#t_title').val(data[2]);
 });

$('#editFormID').on('submit', function(e) {
  e.preventDefault();
  var id= $('#id').val();
  $.ajax({
    type: "PUT",
    url: "/studentupdate/"+id,
    data: $('#editFormID').serialize(),
    success: function(response) {
      console.log(response);
      $('#studentEditModal').modal('hide');
      alert("Data Updated");
    },
    error: function(error) {
      console.log(error);
    }
  });
 });
});

После отправки jquery обновляет данные в базе данных без перезагрузки страницы, но чтобы увидеть их в таблице I. нужно перезагрузить страницу.

Я бы хотел видеть данные в таблице без перезагрузки. Идея, вероятно, была бы такой:

После отправки -> Взять идентификатор из формы редактирования (2) -> Найти строку с этим идентификатором в таблице (1) -> и обновить ячейки project_id и t_title.

Как бы это реализовать?

1 Ответ

0 голосов
/ 07 мая 2020

У вас есть 2 варианта

  1. Сложный (и идеальный) вариант:

    • написать API в вашем приложении Laravel для получения записи ID и обновить запись в таблице.
  2. Простой:

    • Просто обновите запись в таблице обновленными значениями полей.

вот изменения, необходимые для простого подхода:

<tbody>
  @foreach ($tasks as $task)
    <tr id="TaskNo{{ $task->id }}">
      <td class="id">{{$task->id}}</th>
      <td class="project_id">{{$task->project_id}}</td>
      <td class="t_title">{{$task->t_title}}</td>
      <td>
      <a href="#" class="editbtn btn btn-success ">EDIT </a>
      <a class="btn btn-success">DELETE </a> </td>
      </tr>
  @endforeach

Добавлен идентификатор в родительский тег для идентификации уникальной строки.

Обновление строки в Jquery

...
success: function(response) {
    console.log(response);
    $('#studentEditModal').modal('hide');
    $('#TaskNo'+ id +' .id').html($('#id').val());
    $('#TaskNo'+ id +' .project_id').html($('#project_id').val());
    $('#TaskNo'+ id +' .t_title').html($('#t_title').val());
    alert("Data Updated");
},
...

Это должно сработать.

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