Laravel AJAX在一个JSON请求中获取所有记录

时间:2019-09-23 20:53:22

标签: ajax laravel laravel-5

我正在尝试使用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 个答案:

答案 0 :(得分:1)

可以传递一个教师对象,而不是写每个表字段

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

因此,为了使此代码起作用,表单的ID需要与列名匹配

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是您的输入id,索引位置1是您的值。