Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Laravel 5.6通过ajax调用将刀片注入视图_Javascript_Php_Laravel - Fatal编程技术网

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

Javascript Laravel 5.6通过ajax调用将刀片注入视图,javascript,php,laravel,Javascript,Php,Laravel,我需要通过ajax调用向视图中注入一些刀片逻辑。 我不确定这是否可能,或者是否有其他方法 我想做的是: axios.post('/buildingimage', formData, { headers: {'Content-Type': 'multipart/form-data' }}) .then(response => { e.preventDefault(); $('.errorMessages').hide();

我需要通过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中。

我假设您有一个JSON响应?在这种情况下,可以通过使用视图工厂类上的render方法直接渲染视图来实现

return response()->json([
    'data' => [
        'building' => $buildingCollection,
        'view' => view('path.to.view')->render(),
    ],
]);
此时,您的javascript tr和td应该是不必要的


表呈现逻辑可以位于服务器端,而不是前端。我个人的偏好是在前端渲染。

你不能这样做。在后端处理刀片逻辑,然后从ajax获取结果。那么我在视图中放置了什么?在let newBuilding javascript部分中执行的所有操作。这是相当基本的刀片材料。你可以在这里查看:我有点困惑,所以我对。。。我通过javascript创建并呈现它?我在ajax调用中做什么?在javascript中,您只需将response.data.data.view内容放入HTML中。大概是;$。buildingsTable>tbody:last-child.htmlresponse.data.data.view
Laravel provides render() method to render any of the view from view directory. 
if you want to render any of the view then you can write it as 
view('auth.viewname',$dataarray)->render()

where $dataarray contains the data to be carried to the that view. Here is the example - 
in the controller (on ajax method)
write it like 
return response()->json(view('viewname)->render()));
and then use the response in the ajax to append any html block