Laravel AJAX получает все записи в одном запросе JSON - PullRequest
0 голосов
/ 23 сентября 2019

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

Редактировать контроллер: Я использую имя столбца [efirst, esecond и т. Д.] Я хочу передать все из базы данных без упоминания имени

public function edit($id)
    {
        $teacher = Teacher::find($id);
        return response()->json([
            'status' => 'success',
            'id' => $teacher->id,
            'efirst' => $teacher->efirst,
              'esecond' => $teacher->esecond,
        ]);
    }

Edit.js:

jQuery(document).ready(function($)  {
    $(".table-container").on("click touchstart", ".edit-btn", function () {
        $.ajax({
            type: "GET",
            url: "lists/" + $(this).attr("value") + "/edit",
            dataType: 'json',
            headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') },
            beforeSend: function() {
            $('#esecond-not-found').remove();
            },
            success: function (data) {
                $("#update-id").val(data['id']);
                $("#update-efirst").val(data['efirst']);
                $("#update-esecond").val(data['esecond']);
                $('#update-form').show();
            },
        });
    });
});

Вид:

<form method="post" id="update-form">
{{ method_field('PATCH') }}
 <input type="hidden" name="id" id="update-id">
  <div class="">
    <label for="efirst">efirst</label>
       <input type="text" class="form-control" name="efirst" id="update-efirst">   
         <label for="esecond">esecond body</label>
           <textarea name="esecond" class="form-control" id="update-esecond" rows="6"></textarea>
 </div>
    <div class="">
       <button type="submit" class="btn btn-success"  id="update-submit">Update</button>
         <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
    </div>
</form>

1 Ответ

1 голос
/ 24 сентября 2019

Объект учителя может быть передан вместо записи каждого поля таблицы

return response()->json([ 'status' => 'success', 'teacher' => $teacher ]);

Таким образом, чтобы этот код работал, идентификатор формы должен соответствовать имени столбца

let teacher = Object.entries(data.teacher); 
teacher.forEach(item => { $("#"+item[0]).val(item[1]); });

Допустим, у нас есть четыре входа

<input id="data1" type="text" class="form-control">
<input id="data2" type="text" class="form-control">
<input id="data3" type="text" class="form-control">
<input id="data4" type="text" class="form-control">

, и вы делаете это

success: function (data) {
    let teacher = Object.entries(data.teacher);
    teacher.forEach(item => {
       console.log(item)
       $("#"+item[0]).val(item[1]);
    });
}

журнал консоли дает следующее

(2) ["data1", "test1"]
(2) ["data2", "test2"]
(2) ["data3", "test3"]
(2) ["data4", "test4"]

, вы получаетемассив массивов, которые вы можете зациклить, где позиция индекса 0 является вашим входным идентификатором, а позиция индекса 1 является вашим значением.

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