Javascript函数Laravel中的Php$var
我将php$var从控制器传递到Javascript中$var已从数据库中获取地址。我把它放在Javascript中。现在我可以在控制台中看到地址了。没问题,我不知道为什么会出现语法错误 这就是我将它插入JS的方式Javascript函数Laravel中的Php$var,javascript,php,laravel,Javascript,Php,Laravel,我将php$var从控制器传递到Javascript中$var已从数据库中获取地址。我把它放在Javascript中。现在我可以在控制台中看到地址了。没问题,我不知道为什么会出现语法错误 这就是我将它插入JS的方式 function initMap(){ var options = { zoom:8, center: '{!! $estates[0]->address !!}'
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运行没有问题,我可以在控制台中看到addreses,但也可以在这一行看到:{!!$estates[0]->address!!}
错误也会弹出。实际上我看到的是地址而不是这行
错误是:
未捕获的语法错误:无效或意外标记
你知道吗?我犯语法错误了吗。但是如果这样做,那么我如何在控制台检索地址呢
在同一行也有此错误:
未定义变量:地产(视图:
/var/www/html/laravel/resources/views/layouts/app.blade.php)(视图:
/var/www/html/laravel/resources/views/layouts/app.blade.php)
控制器
主题与重复的主题不同。这不是纯粹的JS,我和拉威尔一起工作 您可以将laravel刀片文件中的php变量用作 变量选项={ 缩放:8, 中心: “{{$estates[0]->address}”
}我认为其中一个地址包含
“
字符。要避免这种情况,请使用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
}
我认为,php脚本在中无法工作javascript@jinJavascript在刀片模板中,所以应该可以工作<
.js
中的code>PHP文件将无法工作(除非您告诉您的服务器),它的可能重复肯定不是同一主题@Thomas@窃笑,但控制器代码too@Snickers确保estates
变量的名称确实是这样的。。这似乎是某种类型的输入错误我检查了它的名字没有问题,但你的代码没有工作相同的错误仍然在那里感谢更新,但现在我得到了这个错误InvalidValueError:setCenter:不是LatLng或LatLngLiteral:不是对象
顺便说一句,数据库中有4个addRese。如果你删除了foreach,我怎么能用marker来翻译呢?好吧,现在还有另外一个故事。。“中心”属性需要设置纬度和经度的对象。不能向其传递地址字符串。可能也是这个职位。另外,我写的内爆和你的foreachI给中心的东西是一样的:city lat和lng,但标记器需要带地址字符串。现在跳转到标记部分。
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
}