[英]How to send PHP data to Javascript file in Laravel (Google maps API)
由于页面视图中的JavaScript,我在Laravel中的pagespeed遇到了麻烦。
我试图通过在页面视图上没有任何JavaScript,而是在单独的search.js文件中来提高我的pagespeed。
我用Google地图生成了地图,并在地图上放置了约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>
我无法在search.js文件中执行此操作,因为我没有$usersall
的数据。
所以这是我的问题: 如何将用户的PHP变量传递到search.js文件,这样我可以在地图上显示所有标记,而页面视图本身没有任何JavaScript?
这不是执行此操作的最佳方法,而是最直接的方法:
<script>
var users = {{ $usersall }};
</script>
集合的默认输出(在回显时)将转换为JSON字符串。 因此,您可以将其直接分配给JS中的变量。
但是,理想情况下,您应该通过AJAX检索此值并将其分别传递给函数。
据我所知,如果您想要的是在search.js中获取php变量的值。
我建议为此目的使用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
类获取所有元素,并对其进行循环以获取值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.