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

时间:2017-09-26 22:22:52

标签: javascript laravel

我有一个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文件中访问它们。

谢谢

2 个答案:

答案 0 :(得分:1)

<script>    
    var path= {!! $path !!};
</script>

我还建议将变量名称更改为&#34; public_path&#34;。您可能还需要其他路径。

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

答案 1 :(得分:1)

您可以通过使用像{{$path}}{{session('path')}}这样的Blade注入代码来设置JS代码中的路径...前提是您已在适当的时间在某处设置了会话('path')正确的地方。