【问题标题】:Trying to pass js value in Route Parameter : Laravel 5尝试在路由参数中传递 js 值:Laravel 5
【发布时间】:2016-11-06 21:43:46
【问题描述】:

我的路线在这里

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" =&gt; 1]); !!}';

有什么问题?

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

Js 值为ServiceArea.ID

【问题讨论】:

  • 棘手的一个。我能想到的最好的方法是将其附加为查询参数。 var URL = '{{ route("ServiceAreaDetails"); }}?ID='+ServiceArea.ID;
  • 没有。因为路由参数不是可选的。
  • 嗯,你会改变你的路线,让它成为可选的。否则,您可以手动构建 URL。 var URL = '/areas/'+ServiceArea.ID;

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我刚刚使用 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'
        )
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-17
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 2019-03-03
      • 2018-08-14
      相关资源
      最近更新 更多