Laravel getQueryString() 没有 &

Dmi*_*lys 2 laravel-blade

我正在尝试将包含部分 URL 的变量输出到我页面上的 Javascript 中。当我这样做时,它会将 any 更改&&,这会破坏 URL。

我试过使用str_replace, html_entity_decodehtmlspecialchars_decode但结果总是相同&而不是&.

我怎样才能得到它&而不是&

这是我的控制器:

//here we catch the query
public function index(Request $request)
    {
        $input   = $request->getQueryString();

        return view('lots.browse')->withInput($input);
    }

// here we filter the ajax request
public function indexData(LotFilters $filters)
    {
       $lots  = Lot::filter($filters);

        return Datatables::eloquent($lots)->make(true);
    }
Run Code Online (Sandbox Code Playgroud)

这是我的观点:

<!-- Datatables -->
    <script type="text/javascript">
        $(document).ready(function(){
            $('#table').DataTable({
                searching: false,
                processing: true,
                serverSide: true,
                ajax: '{{  url("/data") . "?" .  html_entity_decode($input) }}',
                columns: [
                    { data: 'date', name: 'date' },
                    { data: 'bid', name: 'bid' },
                    { data: 'auction_name', name: 'auction_name' },
                    { data: 'pics_urls', name: 'pics_urls' },
                    { data: 'company', name: 'company' },
                    { data: 'model_name_en', name: 'model_name_en' },
                    { data: 'model_type_en', name: 'model_type_en' },
                    { data: 'grade_en', name: 'grade_en' },
                    { data: 'mileage_en', name: 'mileage_en' },
                    { data: 'model_year_en', name: 'model_year_en' },
                    { data: 'color_en', name: 'color_en' },
                    { data: 'displacement', name: 'displacement' },
                    { data: 'transmission_en', name: 'transmission_en' },
                    { data: 'scores_en', name: 'scores_en' },
                    { data: 'start_price_en', name: 'start_price_en' },
                    { data: 'result_en', name: 'result_en' }
                ]
            });
        });
    </script>
Run Code Online (Sandbox Code Playgroud)

这是结果:

在此处输入图片说明

Rob*_*rty 6

使用刀片模板时,{{ $variable }}将对任何不应直接放置在 HTML 中的字符进行正确编码。由于您将此变量放置在 Javascript 中,因此您不希望发生这种情况。

最简单的解决方案是禁用 HTML 编码:{{!! $variable !!}}.

但这不是完整的解决方案。您需要确保该变量不是盲目输出,因为如果它包含单引号,它将破坏您的 Javascript。

完整的解决方案是为单引号转义字符串:

{{!! addcslashes($input, "'") !!}}
Run Code Online (Sandbox Code Playgroud)

  • 这很好,谢谢。我认为只需要一个“{”,例如“{!!” addcslashes($input, "'") !!}` (2认同)