我在Laravel中的页面速度遇到了问题,因为我的页面视图中有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?
发布于 2018-08-28 03:33:58
这不是最好的方法,但它是最直接的:
<script>
var users = {{ $usersall }};
</script>
集合的默认输出(回显时)将转换为JSON字符串。因此,您可以将其直接赋值给JS中的一个变量。
但是,理想情况下,您应该通过AJAX检索此值,并将其单独传递给函数。
发布于 2018-08-28 03:39:15
如果你想要的是获取search.js中php变量的值,据我所知你做不到。
为此,我建议使用ajax,如果不是这样的话,您可以在html中创建一个用户循环来隐藏字段,例如
@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
类获取所有元素,并循环它们以获得值
https://stackoverflow.com/questions/52045798
复制相似问题