Laravel post request niet benaderbaar

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • +1 Henk 'm!

Verwijderd

Topicstarter
Ik probeer een simpel script te maken dat de mogelijke tijden van een reservering geeft in json formaat, die ik dan vervolgens ga ajaxen.
Er is echter een probleem: hij krijgt de post waardes niet binnen, maar de url parameters wel. Zou dit te
maken kunnen hebben met een conflict met de routes of is het een heel ander probleem?
Ik kom er echt niet meer uit.
...

In mijn web.php heb ik de volgende routes staan die met de controller praten:
code:
1
2
3
4
5
6
7
8
9
10
11
// a collection of embedded routes
Route::prefix('embed/')->group(function($request) {
    Route::prefix('company_systems/{company_system}/')->group(function ($request) {
        Route::resource('reservations', 'Systems\Reservation\ReservationController');
    });
});
Route::prefix('ajax/')->group( function($request) {
    Route::prefix('company_systems/{company_system}/')->group(function ($request) {
        Route::post('reservations/available_times', 'Systems\Reservation\ReservationController@available_times');
    });
});


De functe in de reservation controller:

code:
1
2
3
4
5
public function available_times(Request $request)
{
     $input = $request->all();
     return response()->json(['company_system' => $request->company_system, 'input' => $input]); // Returns company system but no input.
}


In mijn app.js heb ajax al geïnitialiseerd :

code:
1
2
3
4
5
6
// Set up ajax with the token
$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
});



Mijn ajax request:

code:
1
2
3
4
5
6
7
8
9
10
11
$.ajax({
        async: false,
        type: "POST",
        url: "/ajax/company_systems/1/reservations/available_times",
        data: {'a':1, 'b':2},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (data) {
        console.log(data);
        }
 });


...

Ik heb al geprobeerd de embed routes uit te zetten, maar tevergeefs.
...

Alle reacties


Acties:
  • 0 Henk 'm!

  • Stemis
  • Registratie: Juli 2013
  • Laatst online: 03-09 23:37
Je kan devtools gebruiken om te kijken wat er in de XHR call gebeurd.

Zo te zien geef je het contentType application/json mee, maar stop je er geen JSON in.
Je stop er namelijk een javascript object in.
JSON is namelijk een string.

Je hebt twee opties:
  • Naar JSON omzetten en versturen
  • Als application/x-www-form-urlencoded versturen
De 2e is het meest gebruikt en wordt ook gebruikt door HTML forms

Met: application/x-www-form-urlencoded;
JavaScript:
1
2
3
4
5
6
7
8
9
$.ajax({
        async: false,
        type: "POST",
        url: "/ajax/company_systems/1/reservations/available_times",
        data: {'a':1, 'b':2},
        success: function (data) {
        console.log(data);
        }
 });


Of met JSON:
JavaScript:
1
2
3
4
5
6
7
8
9
10
$.ajax({
        async: false,
        type: "POST",
        url: "/ajax/company_systems/1/reservations/available_times",
        data: JSON.stringify({'a':1, 'b':2}),
        contentType: 'json',
        success: function (data) {
        console.log(data);
        }
 });

[ Voor 47% gewijzigd door Stemis op 16-02-2018 15:53 ]


Acties:
  • 0 Henk 'm!

  • Crazy-
  • Registratie: Januari 2002
  • Laatst online: 10:29

Crazy-

Best life ever

Ik zou sowieso je vars uit je Request ophalen met $request->get(‘company_system’)

12,85kWp - ZB 7,5m2/400l - 5kW Pana H WP (CV&SWW) - 13,8kWh accu


Acties:
  • 0 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 09:09
Ik denk dat het werkt zodra je de contentType weglaat uit je ajax-verzoek. Daardoor denkt laravel dat je JSON stuurt, maar jQuery stuurt de waardes in de "data" variabele als gewone POST-waardes mee. Je contentType header verhinderd nu dat deze juist opgepakt worden.

What do you mean I have no life? I am a gamer, I got millions!