【发布时间】:2020-02-25 08:12:09
【问题描述】:
我在某个时间间隔内调用了 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);
【问题讨论】:
-
收到数据后,您实际上在做什么?你是要把它放到一个div中,还是替换当前页面的内容?
success: function (data) { /* what goes here? document.body.innerHTML=data.html ? */ } -
我已经更新了我的问题,我在第一部分什么也没做,而是在第二部分替换了 div。
-
好的,我想我明白你在做什么了。我在下面更新了我的答案。让我知道它是否适合您。