Laravel返回渲染的html视图,没有\ r \ n - json

时间:2018-01-14 13:44:52

标签: javascript json ajax laravel

我有一个奇怪的问题,渲染视图并在ajax调用后用另一个html部分替换它。

代码如下所示:

// ajax - 控制器功能

$view = view('renderedData', [

            'test' => $data['test'],
            'unicorn' => $data['unicorn'],
        ])->render();
        return json_encode($view);

//我的ajax:

function sendData() {
        var test= "test data"
        var dummy = "unicorn whatever" 
        $.ajax({
            type: "post",
            url: "{{ route('ajaxRender') }}",
            data: {'test': test, 'dummy': dummy},
            success: function (data) {
                $('tbody').replaceWith(data)
            }
        }); //end of ajax
    }

renderedData.blade查看html:

<tbody>
@foreach($data as $d)
        <tr>
            <td>{{ $c->name }}</td>
            <td>{{ $c->$date }}</td>
            <td>{{ $c->$height }}</td>
        </tr>
@endforeach
</tbody>

(刀片中根本没有空格或空行)

控制台中的响应如下所示:

"<tbody>\r\n                <tr>\r\n            <td>mydata<\/td>\r\n            <td>mydata<\/td>\r\n            <td>mydata<\/td>\r\n            <td>mydata<\/td>\r\n            <td>mydata<\/td>\r\n        <\/tr>\r\n                                            <tr>\r\n            <td>mydata<\/td>\r\n            <td>mydata<\/td>\r\n            <td>mydata<\/td>\r\n            <td>mydata<\/td>\r\n            <td>mydata<\/td>\r\n        <\/tr>\r\n    <\/tbody>"

我用新的替换旧的tbody部分。然而,我的表格充满了我的数据和那些&#34; \ r \ n&lt; / td&gt;&#34;而且我不知道为什么。如下图所示:

enter image description here

我在网络控制台中发现的另一件事是,json html看起来很好,下面的答案确实有那些&#34; \ r \ n ...&#34;

我认为&#34;返回json_encode($ view);&#34;因为如果我尝试&#34;返回$ view&#34; - 我可以看到html格式正确。

enter image description here

1 个答案:

答案 0 :(得分:1)

在渲染视图之前,只需使用preg_replace

   $view = view('renderedData', [

                'test' => $data['test'],
                'unicorn' => $data['unicorn'],
            ])->render();

   $view = trim(preg_replace('/\r\n/', ' ', $view));

   return json_encode($view);