首页 > 解决方案 > 显示代码而不是 html 元素

问题描述

我在某个时间间隔内调用了 ajax 请求。现在,如果我在成功 ajax 之后按下后退按钮,浏览器会显示我的所有 HTML 代码,而不是显示 HTML 元素。

<script>
    window.setInterval(function () {
        $.ajax({
            method: 'GET',
            headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
            url: '{{route('devices.index')}}',
            dataType: 'json',
            success: function (data) {
            }
        });
    }, 1000);
</script>
if($request->ajax()){
            foreach ($devices as $device){
                $latestUpdate = Carbon::parse($device->updated_at);
                $diff = Carbon::now()->diffInMinutes($latestUpdate);
                if($diff > 2){
                    Device::where('id',$device->id)->update(['status'=>'3']);
                }
            }
            return response()->json(['msg' => "successfully checked"]);
        }

我曾期望渲染 HTML 元素,但它显示了。

{
"msg": "successfully checked"
}

当我在 json 中发送 HTML 时发生了同样的事情。

if($request->ajax()){
            $returnHtml = view('alerts.index', compact('threshold'))
                ->with('alerts', $alerts)->render();
            return response()->json(['html' => $returnHtml, 'data' => $alerts]);
        }
window.setInterval(function () {
    $.ajax({
                method: 'GET',
                headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
                url: '{{route('alerts.index')}}',
                dataType: 'json',
                success: function (data) {
                    var formatedhtml = $('<div>').html(data.html).find('table');
                    $('table').html(formatedhtml);
                }
            });
        }, 5000);

在这种情况下,它显示 显示的 HTML 代码

标签: htmlajaxlaravel

解决方案


而不是以 json 形式返回,而是以数组形式返回数据:

尝试这样的事情

return ['html' => $returnHtml, 'data' => $alerts];

推荐阅读