代码之家  ›  专栏  ›  技术社区  ›  Patrick

如何将PHP数据发送到Laravel中的javascript文件(Google Maps API)

  •  0
  • Patrick  · 技术社区  · 8 年前

    我在Laravel的pagespeed有问题,因为我的页面视图中有javascript。

    我试图通过在页面视图中没有任何javascript,而是在单独的search.js文件中,提高页面速度。

    我用谷歌地图生成地图,并在地图上放置大约100个标记。根据标记的位置,数据存储在MySQL数据库中(作为用户信息的一部分)。

    现在我在一个 foreach 为传递给视图的每个用户在页面上循环。这使得页面源代码非常长,因为它经过100次循环,并在源代码中显示所有这些javascript。

    下面只是我的代码的一个示例,以获得我所指的jist,显示整个代码。 here .

    <script>
    @foreach($usersall as $user)
    ...
    
    var latlng{{ $user->id }} = {lat: {{ $user->lat }} , lng: {{ $user->long }} };
    
    var marker{{ $user->id }} = new google.maps.Marker({
      map: map,
      clickable : true,
      icon: '/assets/img/pin_marker_open.png',
      position: latlng{{ $user->id }}
    });
    
    markers.push(marker{{ $user->id }});
    
    ...
    @endforeach
    </script>
    

    我不能在search.js文件中这样做,因为我没有来自 $usersall .

    我的问题是: 如何将用户的php变量传递给search.js文件,以便在页面视图中显示地图上的所有标记而不使用任何javascript?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Lance Pioch    8 年前

    <script>
        var users = {{ $usersall }};
    </script>
    

        2
  •  1
  •   Carlos Salazar    8 年前

    @foreach($usersall as $user)
        <input type="hidden" class="user" value="{{$user}}">
        //if fails try encoding json_encode($user) or json_decode($user) i don't rememer
    @endforeach
    

    user