我在Laravel中的页面速度有问题,因为我的页面视图中有javascript。
我试图通过在页面视图上没有任何javascript来提高我的页面速度,而是在单独的搜索.js文件中。
我用谷歌地图生成一张地图,并在地图上放置大约 100 个标记。根据标记应放置的位置的数据存储在MySQL数据库中(作为用户信息的一部分(。
现在,我在页面上的foreach
循环中为传递给视图的每个用户提供了一个脚本。这使得页面源代码非常长,因为它遍历了 100 次循环并在源代码中显示所有这些 javascript。
下面只是我的代码示例,以了解我的意思,此处显示了整个代码。
<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>
我无法在搜索.js文件中执行此操作,因为我没有来自$usersall
的数据。
所以我的问题来了:如何将用户的 PHP 变量传递给搜索.js文件,以便我可以在地图上显示所有标记,而无需在页面视图本身中使用任何 javascript?
这不是最好的方法,但它是最直接的:
<script>
var users = {{ $usersall }};
</script>
集合的默认输出(回显时(将强制转换为 JSON 字符串。因此,您可以直接将其分配给 JS 中的变量。
但是,理想情况下,您应该通过 AJAX 检索此值并将其单独传递到函数中。
如果你想要的是在你的搜索中获取 php 变量的值.js据我所知你不能。
我建议为此目的使用 ajax,如果这不是一个选项,您可以在 html 中将用户循环到 hiddien 字段,例如
@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
然后在js文件中循环,您可以使用user
类获取所有元素并循环它们以获取值