【问题标题】:Laravel 4, Pass a variable to route in javascriptLaravel 4,将变量传递给javascript中的路由
【发布时间】:2015-02-22 10:01:01
【问题描述】:

如何将 Ajax 响应返回的变量 (stock.id) 传递给路由以生成编辑股票的 url

$.ajax({
            url: 'sectors/stocks/' + $(this).data('sector-id'),
            dataType:'json',
            beforeSend:function() {
                $('.stocks_list').html('Loading...');
            }
        })
        .done(function(data) {
            $('.stocks_list').html('<ul>');
            $.each(data, function(index, obj_data) {
                $.each(obj_data.stocks, function(indx, stock) {
                    $('.stocks_list').append('<li><a href="{{route("admin.stocks.edit","'+stock.id+'")}}">' + stock.symbol + ' </a></li>');     
                });
        });
    })

【问题讨论】:

    标签: javascript laravel laravel-4


    【解决方案1】:
    let calculatedId = e.currentTarget.id.split("_")[1];
    
    let url = '{{route('queryToggleStatus', ':queryId')}}';
    
    url = url.replace(':queryId', calculatedId);
    
    $.get(url, function(data, status) {
      console.log (data);
    })
    

    【讨论】:

    • 和@lukasgeiter 解决方案一样!
    【解决方案2】:

    在我看来,最简单的方法是将javascript变量与刀片字符串连接起来,如下所示。

    案例一:需要路由参数

    在这种情况下,传递空字符串代替路由参数以通过所需的验证。

    var url = "{{route('admin.stocks.edit', '')}}"+"/"+stock.id;
    

    案例2:路由参数可选

    在这种情况下,您不必传递空字符串。

    var url = "{{route('admin.stocks.edit')}}"+"/"+stock.id;
    

    【讨论】:

      【解决方案3】:

      在 ajax 中使用路由的最佳方式。


      隐藏输入作为属性中添加路由到按钮或链接中。如下所示。

      这将保存其他 jquery 代码,如获取 id 并传递到 url。这很简单,只需从输入中获取 url 并作为 URL 传递。就是这样。

      <a data-url="{{ route('delete.PendingPatient',['id' => $u->id]) }}" class="btn btn-xs btn-danger btn_delete"> Delete </a>
      

      路线

      <?php
      
      Route::delete('/pending_patient/{id}','PatientController@pending_patient'])->name('delete.PendingPatient');
      

      jQuery

          <script type="text/javascript">
              jQuery(document).ready(function(){
      
                jQuery(document).on('click','.btn_delete',function(){
                   var current = jQuery(this);
                   var url = current.data('url');
      
                   $.ajax({
                          url: url,
                          dataType:'json',
                          beforeSend:function() {
                              $('.stocks_list').html('Loading...');
                          }
                      })
                      .done(function(data) {
                          $('.stocks_list').html('<ul>');
                      });
      
                    });
      
               });
           });
      </script>
      

      【讨论】:

        【解决方案4】:

        感谢 lukasgeiter,你让我开心。有用。只需要更改替换方法,因为 laravel scape ":" 为 "%3A"

        var url = '{{ url("/admin/solicitud", ":id") }}';
        url = url.replace('%3Aid', data.datos[i].id);
        dhtml+='<td><a href="'+url+'" class="btn btn-primary" role="button">Ver más...</a></td>';   
        

        或者简单地只让id字符串

        var url = '{{ url("/admin/solicitud", "id") }}';
        url = url.replace('id', data.datos[i].id);
        dhtml+='<td><a href="'+url+'" class="btn btn-primary" role="button">Ver más...</a></td>';
        

        【讨论】:

          【解决方案5】:

          您可以先使用占位符生成 URL,然后在 javascript 中替换它。

          var url = '{{ route("admin.stocks.edit", ":id") }}';
          url = url.replace(':id', stock.id);
          $('.stocks_list').append('<li><a href="'+url+'">' + stock.symbol + ' </a></li>');
          

          【讨论】:

          • 好的,现在可以了,谢谢,实际上我做了一点改变,因为 Laravel 转义了字符 %
          • 哎呀,你是对的。你用什么代替了%
          • 我只是把它改成了另一个字符串,比如 S_id_E
          猜你喜欢
          • 2017-05-03
          • 2015-12-02
          • 1970-01-01
          • 2015-03-16
          • 2017-11-03
          • 2015-01-06
          • 1970-01-01
          相关资源
          最近更新 更多