Laravel 5.6通过Ajax调用将刀片注入视图

时间:2018-11-14 09:48:34

标签: javascript php laravel

我需要通过ajax调用将一些刀片逻辑注入到我的视图中。 我不确定这是否可能,或者还有其他方法吗?

我正在尝试做的事情:

axios.post('/buildingimage', formData, { headers: {'Content-Type': 'multipart/form-data' }})
        .then(response => {
            e.preventDefault();

            $('.errorMessages').hide();
            let building = response.data.building;

            let resultInfo = "";

            $('.successMessages').show();

            let newBuilding = "<tr>" +
                "                  <td>" + building.location + " </td>" +
                "                  <td>" + building.source + "</td>" +
                "                  <td>" + building.disc + "</td>" +
                "                  <td>" + building.result + "</td>" +
                "                  <td>" + resultInfo + "</td>" +
                "                  <td> Edit form </td>" +
                "                  @can('Delete buildings')" +
                "                  <td>" +
                "                      {!! Form::open(['class' => 'deleteBuildingForm', 'method' => 'DELETE', 'route' => ['buildingimage.destroy', " + building.id + "] ]) !!}" +
                "                              <button type='submit' class='btn btn-danger'>" +
                "                              <i class='far fa-trash-alt'></i>" +
                "                          </button>" +
                "                      {!! Form::close() !!}" +
                "                  </td>" +
                "                  @endcan" +
                "              </tr>";

            $(".buildingsTable > tbody:last-child").append(newBuilding);
        })
        .catch(error => {
            if (error.response) {
                $('.errorMessages').show();
                $('.successMessages').hide();

                $.each(error.response.data.errors, function(key, value) {
                    $('.errorMessagesList').append('<li>' + value + '</li>');
                });
            }
    });

如您所见,我尝试渲染的表单实际上不是我看来的表单,而是一个字符串。我不确定该如何解决。

棘手的部分是应该在表的td中。

2 个答案:

答案 0 :(得分:1)

我假设您正在接收JSON响应?在这种情况下,您可以通过使用render() Factory类上的View方法直接呈现视图来实现此目的。

return response()->json([
    'data' => [
        'building' => $buildingCollection,
        'view' => view('path.to.view')->render(),
    ],
]);

此时您不需要使用JavaScript trtd

您的表呈现逻辑可以在服务器端而不是前端。我个人的喜好是将其呈现在前端。

答案 1 :(得分:0)

$ curl -sSL -D - -o /dev/null --insecure --user admin:xxxxx https://172.16.99.61/settings.xml
Wed Nov 14 11:19:53 CET 2018
curl: (52) Empty reply from server
相关问题