试图在路由参数:Laravel 5中传递js值

时间:2016-11-06 21:43:47

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-5.3

我的路线在这里

Route::get('/Service-Areas-Details/{ID}', 
    array(
        'uses'  => 'Web\ServiceAreas\ServiceAreaController@ServiceAreaDetails', 
        'as'    => 'ServiceAreaDetails'
    )
);

以下是我在Laravel中的代码。

<script language="javascript">
    $(document).ready(function() {
        var $_token         =   "{!! csrf_token() !!}";

        var data = {
            "_token"        : $_token, 
        };
        $.ajax({
            url:            '{{URL::route("apiServiceAreas")}}',
            method:         "POST",
            async:          true,
            data:           JSON.stringify(data),
            contentType:    "application/json; charset=utf-8",
            success: function (result) {
                $.each(result.Data, function( key, ServiceArea ) {
                    var URL = '{!! route("ServiceAreaDetails", ["ID" => 1]); !!}';
                });
            }
        });
    });
</script>

讨论的重点是什么?

此代码中的值= 1是静态的。我们可以让它变得动态吗? var URL = '{!! route("ServiceAreaDetails", ["ID" => 1]); !!}';

问题是什么?

路由功能是服务器端编码。有没有办法将循环中的js值传递给这个服务器端函数参数?

Js值为ServiceArea.ID

2 个答案:

答案 0 :(得分:1)

可能的解决方案:使用0作为占位符ID并根据需要进行替换。

根据需要为正则表达式添加限制,或者在替换URL的错误部分时使用更独特的占位符。

            $.each(result.Data, function( key, ServiceArea ) {
                var URL = '{!! route("ServiceAreaDetails", ["ID" => 0]); !!}';
                URL = URL.replace(/0/, ServiceArea.ID);
            });

答案 1 :(得分:0)

我刚刚使用2个选项修复了它。

方法1

var asset = '{!! URL::asset("Service-Areas-Details") !!}';

方法2

通过使tanerkuc

告知参数可选
Route::get('/Service-Areas-Details/{ID?}', 
    array(
        'uses'  => 'Web\ServiceAreas\ServiceAreaController@ServiceAreaDetails', 
        'as'    => 'ServiceAreaDetails'
    )
);