我在Laravel视图中有一个包含Google地图的div,该视图接收一个JSON数组,该数组包含来自MySQL数据库的坐标以在地图上插入标记,我希望div在一定时间后自动刷新如果在数据库中输入了新记录。
视图第一次加载时发送数组的控制器的index函数:
public function index()
{
if (Auth::guest())
{
return redirect('home');
}
else{
$user = Auth::user();
$data = Reading::where('reg_id', $user->regNumber)->get();
return view('readings.index', ['data'=>$data]);
}
}
页面加载后,准备使用另一个功能来开始刷新div:
$(document).ready(function(){
setInterval(function(){
$('#map').load('refresh',function () {
initMap(); //function that generates map with markers
});
},20000);
});
这将从控制器调用另一个函数:
public static function refresh()
{
$user = Auth::user();
$data = Reading::where('reg_id', $user->regNumber)->get();
return response()->json(['data'=>$data]);
}
页面加载时一切正常,但是当div第一次刷新时,我从浏览器的检查器中收到一条警告:“ [Deprecation]不赞成在主线程上使用同步XMLHttpRequest,因为它对最终用户的有害影响经验。有关更多帮助,请检查https://xhr.spec.whatwg.org/。”我看到数组被多次发送。
很明显,我的想法有问题,所以我试图找到一种正确执行此方法的方法。
答案 0 :(得分:0)
我认为最好的方法是解决ajax请求。
Ajax请求可以返回html,因此您将调用ajax take响应并将其放入“旧” div中。