如何与 js 文件 laravel 共享变量?

Posted

技术标签:

【中文标题】如何与 js 文件 laravel 共享变量?【英文标题】:How to share a variable with js files laravel? 【发布时间】:2018-03-08 06:44:41 【问题描述】:

我有一个 Laravel 5.5 项目 在应用服务提供商中,我共享了一些变量,如下所示:

public function boot()

    View::share('path', 'laravel/public');

我可以很容易地在每个视图刀片中访问它。

但我有 ajax 搜索,它来自主布局中包含的一个单独的 JS 文件。

<script src=" asset('style//js/searchajax.js')"></script>

这是searchajax.js 代码

var path = '/laravel/public/';
$("#userSearchAjax").bind('change keyup',function()
var userSearchAjax = $(this).val().trim();
if(userSearchAjax != '')

    $.ajax(
        type:'GET',
        url: '/laravel/public/userssearchajax',
        data: userSearchAjax:userSearchAjax,
        success:function(data)
            var result = "<tr class='info'><td>اسم المستخدم</td><td>الصورة</td></td><td>البريد الالكتروني</td></td><td>رقم الهاتف</td></td><td>الفرع</td></td><td>اعدادات</td></tr>";
            for(i = 0;i<data.length;i++)
            
                result+= "<tr class='warning'><td>"+data[i]['user_name']+"</td>";
                result+= "<td>";
                    result += "<a data-title='"+data[i]['user_name']+"'  data-lightbox='image-1' target='_blank' href='"+path+"uploads/users/"+data[i]['id']+"/"+data[i]['id']+".jpg'><img alt='"+data[i]['user_name']+"' title='"+data[i]['user_name']+"' src='"+path+"/uploads/users/"+data[i]['id']+"/"+data[i]['id']+".jpg' class='thumb' /><br /></a>";
                result+= "</td>";
                result+= "<td>"+data[i]['user_email']+"</td>";
                result+= "<td>"+data[i]['user_phone']+"</td>";
                result+= "<td>"+data[i]['user_department']+"</td>";
                result+= "<td><a class='btn btn-success'>عرض</a>";
                result+= "<a class='btn btn-info'>تعديل</a></td></tr>";
            
            result += "";
            $("#search-result").html(result);
        

    );

else

    $("#search-result").html("");

)

我的问题是我无法访问 js 文件中的共享变量 $path 甚至像 Auth 和 Laravel 中的其他默认模型这样的共享模型我也无法在 js 文件中访问它们。

谢谢

【问题讨论】:

Laravel 是服务端代码,js 是客户端代码。您不能将用 php 语法编写的服务器端代码与客户端上的 JS 代码共享……它们是两个完全独立的实体。您可以使用服务器端的 PHP 或 Blade 模板语言在您的布局文件 JS 脚本中注入代码。 【参考方案1】:
<script>    
    var path= !! $path !!;
</script>

我还建议将变量名称更改为“public_path”。您可能还需要其他路径。

这个问题也类似于: laravel-5 passing variable to javascript

【讨论】:

【参考方案2】:

您可以通过像 $pathsession('path') 这样使用 Blade 注入代码来设置 JS 代码中的路径...前提是您在正确的时间和正确的位置设置了会话('path')。

【讨论】:

以上是关于如何与 js 文件 laravel 共享变量?的主要内容,如果未能解决你的问题,请参考以下文章

与 Node.js / Socket.io 服务器共享 Laravel 会话

Laravel 与子域共享主机

将 Vue js 前端和 laravel 后端(api 路由)托管到共享服务器?

将变量共享到 laravel 布局

在Laravel / Vue.js项目中共享静态/配置数据的最佳方法是什么

与 PHP 共享 Laravel 身份验证/会话