首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Javascript函数Laravel中的Php $var

Javascript函数Laravel中的Php $var
EN

Stack Overflow用户
提问于 2018-12-04 08:34:20
回答 2查看 171关注 0票数 0

我从控制器将php $var传递给Javascript。$var从DB中获取地址。我把它写在Javascript里。现在我可以看到控制台中的地址了。没有问题,我不知道为什么语法错误也会弹出。

我就是这样把它插入到JS中的。

代码语言:javascript
运行
复制
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);
        });
    }

我的程序运行时没有问题,我可以在控制台中看到地址,但也可以在这一行中看到:'{!! $estates[0]->address !!}'错误也会弹出。实际上,我看到的是地址,不是这一行。

错误是:

未登录的SyntaxError:无效的或意外的令牌

你有什么想法吗?我是不是犯了语法错误。但是,如果这样做,我如何在控制台检索地址呢?

在同一行中也有此错误:

未定义变量:属性(视图: /var/www/html/laravel/resources/views/layouts/app.blade.php) (视图: /var/www/html/laravel/resources/views/layouts/app.blade.php) )

控制器

代码语言:javascript
运行
复制
public function index()
{
    $estates = DB::table("allestates")
        ->get();
    return view("home", compact('estates'));
}

这个话题和重复的不同。这不是纯JS我是和Laravel一起工作的。

EN

回答 2

Stack Overflow用户

发布于 2018-12-04 08:46:39

我认为其中一个地址包含'字符。为避免出现这种情况,请使用addslashes函数。您可以在控制器中这样做:

代码语言:javascript
运行
复制
public function index()
{
    $estates = DB::table("allestates")->get()->map(function($estate) {
        $estate->address = addslashes($estate->address);
        return $estate;
    });

    return view("home", compact('estates'));
}

相关的联合声明将是:

代码语言:javascript
运行
复制
var options = {
    zoom:8,
    center: new google.maps.LatLng({{$estates[0]->lat}}, {{$estates[0]->long}});
}

因为您有多个地址,这意味着您也将有多个标记。话虽如此,您的代码应该如下所示:

代码语言:javascript
运行
复制
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
}
票数 0
EN

Stack Overflow用户

发布于 2018-12-04 08:44:45

您可以在laravel刀片文件中使用php变量作为

var options ={缩放:8,中间:{{$旅游地->地址}

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

https://stackoverflow.com/questions/53608684

复制
相关文章

相似问题

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