Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript函数Laravel中的Php$var_Javascript_Php_Laravel - Fatal编程技术网

Javascript函数Laravel中的Php$var

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 !!}'

我将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运行没有问题,我可以在控制台中看到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
}