如何在laravel blade中动态打印JavaScript变量

如何在laravel blade中动态打印JavaScript变量,javascript,laravel,Javascript,Laravel,我正在使用Pusher构建通知,并将“route”作为JavaScript变量接收到某个页面 现在我想把这个变量作为一个链接注入通知栏,链接到变量中确定的某个页面, 我尝试制作href,并使用laravel url方法将路由放入其中,以便从任何页面访问它。这是密码 channel.bind('App\\Events\\Councilcreated', function (data) { var a = document.createElement('a'); a.setAttri

我正在使用Pusher构建通知,并将“route”作为JavaScript变量接收到某个页面

现在我想把这个变量作为一个链接注入通知栏,链接到变量中确定的某个页面, 我尝试制作href,并使用laravel url方法将路由放入其中,以便从任何页面访问它。这是密码

channel.bind('App\\Events\\Councilcreated', function (data) {
    var a = document.createElement('a');
    a.setAttribute("href", "{{ url(".data.page.") }}");
});

问题是(data.page)打印为字符串而不是(data.page)变量的值

我建议您首先将URL存储到javascript变量中,然后将数据添加到其中,然后将其设置为您的href。像下面这样

var url = "{{ url() }}";
a.setAttribute("href", url+'/'+data.page);
//php
$this->page = url($page);

//javascipt
a.setAttribute("href", data.page);
如果您像您所说的那样得到htmlspecialchars()错误,然后像下面那样使用它

    var url = "{!! url() !!}";
a.setAttribute("href", url+'/'+data.page);
为什么不从php端传递完整的url并直接在这里使用,如下所示

var url = "{{ url() }}";
a.setAttribute("href", url+'/'+data.page);
//php
$this->page = url($page);

//javascipt
a.setAttribute("href", data.page);

这将不起作用,因为您将javascript与php混合使用,即当此函数执行时,您将无法访问
url
函数,因为它将在浏览器中执行

我建议在事件类中使用
page
完全限定的url,即使用
url()
函数:

public function __construct($councilname, $id, $title, $message, $page, $icon)
{
    $d = 0;
    $this->councilname = $councilname;
    $this->id = $id;
    $this->title = $title;
    $this->message = $message;
    $this->page = url($page); // <-- This line
    $this->icon = $icon;
}

在页脚中声明一个如下所示的变量

consturl=“{{url()}}”

如果返回任何特殊字符,请使用以下命令:

consturl=“{!!url()!!}”

然后在所有需要的地方继续使用此变量,如:


a.setAttribute(“href”,url+'/'+data.page)

请显示您在事件类中设置
页面的位置?`public$councilname;公费$id;公有产权;公费$d;公共信息;公众$page;公众$图标;公共函数构造($councilname、$id、$title、$message、$page、$icon){$d=0;$this->councilname=$this->id=$id;$this->title=$title;$this->message=$message;$this->page=$page;$this->icon=$icon;}`它在控制台中成功打印。frst sugget return LAVEL exception htmlspecialchars()期望参数1为字符串,object given我将页面保存在通知表中,保存整个url是否正确?不要保存在表中,只需像我建议的那样,从事件中重新运行整个url即可
$this->page=url($page)我将页面保存在DB的通知表中,保存整个url正确吗?@SamehMohamedOmar是的,保存通知的整个url没有问题。return Larvel exception htmlspecialchars()希望参数1是字符串,对象必须是
url()指定的某个特殊字符
方法正在返回。我已经更新了答案。