首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Laravel (Google maps API)中将PHP数据发送到Javascript文件

如何在Laravel (Google maps API)中将PHP数据发送到Javascript文件
EN

Stack Overflow用户
提问于 2018-08-28 03:24:00
回答 2查看 736关注 0票数 1

我在Laravel中的页面速度遇到了问题,因为我的页面视图中有javascript。

我试图让我的页面速度变得更好,在页面视图上没有任何javascript,而是在一个单独的search.js文件中。

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

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

下面只是我的代码的一个例子,以获得我想要的jist,整个代码显示为here

代码语言: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?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-28 03:33:58

这不是最好的方法,但它是最直接的:

代码语言:javascript
复制
<script>
    var users = {{ $usersall }};
</script>

集合的默认输出(回显时)将转换为JSON字符串。因此,您可以将其直接赋值给JS中的一个变量。

但是,理想情况下,您应该通过AJAX检索此值,并将其单独传递给函数。

票数 1
EN

Stack Overflow用户

发布于 2018-08-28 03:39:15

如果你想要的是获取search.js中php变量的值,据我所知你做不到。

为此,我建议使用ajax,如果不是这样的话,您可以在html中创建一个用户循环来隐藏字段,例如

代码语言:javascript
复制
@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类获取所有元素,并循环它们以获得值

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52045798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档