web-dev-qa-db-ja.com

Laravel 4、JavaScriptでルーティングする変数を渡す

変数(stock.id)の戻り値をAjax応答からルートに渡して、株を編集するための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>');     
                });
        });
    })
15
Marwan

最初にプレースホルダーを使用して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>');
55
lukasgeiter

ありがとうルカスガイター、あなたは私の一日を作ります。できます。 laravel scape ":" to "%3A"なので、replaceメソッドを変更する必要があるだけです。

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>';
2
Carolina

ajaxでルートを使用する最良の方法。


非表示の入力または属性として取得のルートをボタンまたはリンクに追加します。以下のように。

これにより、get idなどの他のjqueryコードが保存され、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>
1
Mayank Dudakiya