我将php$var从控制器传递到Javascript中$var已从数据库中提取地址。我把它放在Javascript中。现在我可以在控制台中看到地址了。没问题,我不知道为什么语法错误也会出现。
这就是我将它插入JS的方式。
function initMap(){
var options = {
zoom:8,
center:
'{!! $estates[0]->address !!}'
}
var map = new google.maps.Map(document.getElementById("map"), options);
var marker = new google.maps.Marker({
position:
@foreach($estates as $addr)
'{!! $addr->address !!}',
@endforeach
map:map
});
var infoWindow = new google.maps.InfoWindow({
content:'content here'
});
marker.addListener('click', function () {
infoWindow.open(map, marker);
});
}
我的foreach运行没有问题,我可以在控制台中看到地址,但也可以在这一行看到:'{!! $estates[0]->address !!}'
错误也会弹出。实际上我看到的是地址而不是这行。
错误是:
未捕获的SyntaxError:无效或意外的令牌
你知道吗?我是不是犯了语法错误。但如果这样做了,我该如何在控制台检索地址?
在同一行也有这个错误:
未定义变量:庄园(视图:/var/www/html/laravel/resources/views/layouts/appblade.php((视图:/var/www/html/laravel/resources/views/layouts/appblade.php(
控制器
public function index()
{
$estates = DB::table("allestates")
->get();
return view("home", compact('estates'));
}
重复的主题不同。这不是纯粹的JS,我正在与Laravel合作。
我认为其中一个地址包含'
字符。为了避免这种情况,请使用addslashes函数。你可以在控制器中这样做:
public function index()
{
$estates = DB::table("allestates")->get()->map(function($estate) {
$estate->address = addslashes($estate->address);
return $estate;
});
return view("home", compact('estates'));
}
根据js:
var options = {
zoom:8,
center: new google.maps.LatLng({{$estates[0]->lat}}, {{$estates[0]->long}});
}
因为你有多个地址,这意味着你也会有多个标记。话虽如此,你的代码应该看起来像:
function initMap(){
var options = {
zoom:8,
center: new google.maps.LatLng({{$estates[0]->lat}}, {{$estates[0]->long}});
}
var map = new google.maps.Map(document.getElementById("map"), options);
var infoWindow = new google.maps.InfoWindow({
content:'content here'
});
var markers = [];
@foreach ($estates as $key => $estate)
markers[{{$key}}] = new google.maps.Marker({
position: new google.maps.LatLng({{$estate->lat}}, {{$estate->long}});
map: map
});
markers[{{$key}}].addListener('click', function () {
infoWindow.open(map, markers[{{$key}}]);
});
@endforeach
}
您可以将laravel刀片文件中的php变量用作
var选项={缩放:8,中心:"{{$estates[0]->地址}}"}