Mr Robot
Mr Robot

Reputation: 897

Laravel executing GET instead of POST request

I have form to POST data to Controller and update database

The form in my orders.blade.php

<form method="post" enctype="multipart/form-data">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <select name="selectdb" required>
        <option value="" disabled selected>Select Delivery Boy</option>
        @foreach($delvery_boys as $delvery_boy)
          <option name="selectdb" data-oid="{{$order->id}}" value="{{$delvery_boy->id}}">{{$delvery_boy->name}}</option>
        @endforeach
    </select>
    <button type="submit" class="assigndb-btn btn-floating waves-effect waves-light">
        <i class="material-icons">send</i>
    </button>
</form>

I am doing an ajax POST request of form data to controller in my orders.blade.php

$(document).one("click", ".assigndb-btn", function () {

    $('form').submit(function(event) {
        event.preventDefault();

        var order_id = $(this).find(":selected").data('oid');
        var delivery_boy_id = $(this).find(":selected").val();
        var delivery_boy_name = $(this).find(":selected").text();

        $.ajax({
            url: '{{ url('/manager/assign_orders') }}',
            type: 'POST', 
            data: {"order_id":order_id,"delivery_boy_id":delivery_boy_id},
            success: function(data) {
                console.log(data);
            },
            error: function(error) {
                console.log(error);
            }
        });

    });

});

And in my OrdersController.php i have the logic to updated the posted data

public function assignDeliveryBoy(Request $request)
{
    $assign_delivery_boy = Order::where('id', $request->order_id)->update(['delivery_boy_id' => $request->delivery_boy_id]);

    $data = [
        'success' => true,
        'message' => 'Order has been asigned'
    ];

    return response()->json($data);
}

My Route is

Route::group(['prefix' => 'manager', 'middleware' => ['auth','roles'], 'roles' => 'manager'], function() {
    Route::post('/assign_orders', 'OrdersController@assignDeliveryBoy')->name('assignOrder');
});

When i submit the form it suppose to hit the assign_order route and update the database

But in my console i am getting the html code of the page from where i submit the form basically it is executing GET instead of POST

As i checked in browser network whent the response is

Request URL:http://localhost:8000/manager/orders //but i am posting to http://localhost:8000/manager/assign_orders
Request Method:GET
Status Code:200 OK
Remote Address:127.0.0.1:8000
Referrer Policy:no-referrer-when-downgrade

i really don't understand what is wrong

thank you

Upvotes: 1

Views: 1286

Answers (3)

Exprator
Exprator

Reputation: 27513

 $.ajax({
        url: '{{ route("assignOrder") }}',
        type: 'POST', 
        data: {"order_id":order_id,"delivery_boy_id":delivery_boy_id,'_token':'{{ csrf_token() }}'},
        success: function(data) {
            console.log(data);
        },
        error: function(error) {
            console.log(error);
        }
    });

Upvotes: 1

Adarsh Sojitra
Adarsh Sojitra

Reputation: 2199

Try this code.

$.ajax({
    url: "{{ url('/manager/assign_orders') }}",
    type: 'POST', 
    data:{
         "order_id":order_id,
         "delivery_boy_id":delivery_boy_id,
         '_token':'{{ csrf_token() }}'
    },
    success: function(data) {
        console.log(data);
    },
    error: function(error) {
        console.log(error);
    }
});

Let me know if it works.

Upvotes: 1

Sami Samiuddin
Sami Samiuddin

Reputation: 457

Try this:

        $.ajax({
        url: '{{ route('assignOrder') }}',
        type: 'POST', 
        data: {"order_id":order_id,"delivery_boy_id":delivery_boy_id},
        success: function(data) {
            console.log(data);
        },
        error: function(error) {
            console.log(error);
        }
    });

Upvotes: 1

Related Questions