使用Laravel自动刷新包含Google地图的div

时间:2018-07-26 09:04:05

标签: html laravel google-maps

我在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/。”我看到数组被多次发送。

很明显,我的想法有问题,所以我试图找到一种正确执行此方法的方法。

1 个答案:

答案 0 :(得分:0)

我认为最好的方法是解决ajax请求。

Ajax请求可以返回html,因此您将调用ajax take响应并将其放入“旧” div中。