0

Lumen を使用して、「チケット」を表示しています。これが私のものTickets.blade.phpです:

@foreach($tickets as $ticket)
<div>
    <p>{{ $ticket->id }}</p>
    <p>{{ $ticket->content }}</p>
    <button onclick="deleteTicket({{$ticket->id}})">Delete</button>
</div>
@endforeach

基本的に、誰かが削除をクリックするたびに、次のスクリプトがトリガーされます。

<script>
    function deleteTicket(id) {
        jQuery.ajax({
            type: "post",
            url: "/tickets/deleteTicket",
            data: id,
            dataType: "text",
            success: function () {
                console.log('deleted!');
            }
        });

    }
</script>

routes.phpの中に、私はこれを持っています:

$app->post('tickets/deleteTicket','TicketsController@deleteTicket');

最後に、私の には、次のTicketsController.phpものがあります。

public function deleteTicket($id) {
    $ticket = Ticket::find($id);
    $ticket->delete();

    return redirect('/tickets');
}

ボタンを押したときに発生する問題(コンソール):

POST http://example.com/tickets/deleteTicket 404 (見つかりません)

何が間違っているのか、なぜその方法が見つからないのかわかりません。誰でも助けてもらえますか?

編集-私は次のように変更routes.phpしました:

$app->get('tickets/deleteTicket/{id}','TicketsController@deleteTicket');

私のスクリプトは同じように見えますが、「タイプ」をgetではなくに変更しましたpost

このサイトにアクセスするとhttp://mysite/tickets/deleteTicket/1、チケットが削除され、ticketsページにリダイレクトされます。しかし、ボタンをクリックすると、次のエラーが発生します。

http://MYSITE/tickets/deleteTicket?id=3 404 (見つかりません)

この時点で、AJAX 呼び出しを正しい URL に修正する必要があるだけだと考えていますが、セキュリティが問題であることを確認したいと考えています。

4

2 に答える 2

2

または、これを試すことができます:

ルート.php

$app->get('tickets/deleteTicket/{id}','TicketsController@deleteTicket');

さて、ここにあなたのブレードがあります:ボタンにクラスを追加し、クリック時に機能を削除します。このように :

<button class="delete" data-id="{{$ticket->id}}>Delete</button>

そしてあなたのスクリプト:

$(".delete").on("click", function(e) {
     e.preventDefault();
    var id = $(this).data('id');
    $.ajax({ 
       url : "tickets/deleteTicket/"+id+"",
       type : "get" or "post",
      success: function(data) {
          alert(data);    
       }
    });
});
于 2016-08-19T05:55:48.437 に答える