html - 显示代码而不是 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);
解决方案
而不是以 json 形式返回,而是以数组形式返回数据:
尝试这样的事情
return ['html' => $returnHtml, 'data' => $alerts];
推荐阅读
- c# - 持久功能:如何将参数传递给 Orchestrator?
- c++ - 如何使用 Windows.h 读取和显示扩展的 ASCII 符号
- javascript - core.js:6150 错误类型错误:this.object 在 Angular 中不可迭代
- python - 当其他进程完成时如何终止一个进程?
- ethereum - 在solidity中迁移代理配置时恢复错误
- flutter - Dart 未处理的异常:FormatException:无效的 radix-10 数字(在字符 1 处)
- wordpress - 为什么 WP 帖子在加载后被截断或样式定义被忽略?
- python - 修改数据框堆叠直方图的日期时间轴 + Matplotlib DateFormatter 与 UTC 日期时间有关的问题
- jquery - 通过 AJAX 发送修改后的重力表格的问题
- python - 尝试使用jsonify返回json时出现属性错误