1
votes

Envoyer des données par Ajax au contrôleur dans Laravel 5.8

J'ai la requête Ajax Voici le code du script

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Variants;

class VariantsController extends Controller
{ 
  public function checkAttribute(Request $request)

    {

        if($request->ajax()){

        return response()->json($request->all());


        }

    }

}

  

Quand je mets dans mon web.php le code

//web.php
Route::post('/showVariantModel', 'VariantsController@checkAttribute');

//VariantsController.php
public function checkAttribute()
{
  if(Request::ajax()){

  return var_dump(Response::json(Request::all()));

} 

Tout semble bien et je reçois la réponse dans mon alerte.

Mais quand je veux tout mettre dans le contrôleur, je reçois l'erreur 500 dans la console

Ci-dessous, j'ajouterai mon code à partir de mon web.php et de mon contrôleur. Le framework est Laravel 5.8

Route::post('/showVariantModel', function(){
	if(Request::ajax()){
		return var_dump(Response::json(Request::all()));
	}
});

Qui sait ce que je fais de manière incorrecte, donnez un conseil…

Mise à jour de l'erreur

https://i.stack.imgur.com/iDvvG.jpg

Merci Md.Sukel Ali J'ai mis à jour mon contrôleur. Non ça a l'air

<script>
$('#variant_model').change(function(){
  var value = $('select#variant_model').val();

  $.ajaxSetup({
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });
  $.ajax({
    type:"POST",
    url: "showVariantModel",
    data: value,
    success: function(data){
      alert(data);
    }
  })

});
</script>

Tout fonctionne bien maintenant. Merci.


3 commentaires

Pouvez-vous vérifier le contenu de la réponse en cliquant sur la demande ayant échoué dans l'onglet Réseau de la console développeur, puis en cliquant sur la réponse?


fermez votre déclaration if


Vous n'avez pas besoin de mettre à jour votre question avec une réponse fonctionnelle. Gardez simplement la question originale pour référence future.


3 Réponses :


2
votes

La balise de fermeture est manquante

public function checkAttribute()
{
  if(Request::ajax()){
   return Response::json(Request::all());
  }
} 


0 commentaires

0
votes

Vous devez ajouter des importations dans votre contrôleur:

use Illuminate/Http/Request;
use Illuminate/Http/Response;


0 commentaires

0
votes

Au lieu d'aveugler devinez ce qui se passe sous le capot de l'appel ajax. Je vous suggère d'apprendre comment déboguer la requête ajax.

Allez dans votre navigateur, faites un clic droit et inspectez puis allez dans l'onglet Réseau pour voir votre demande. Cliquez sur votre demande puis recherchez l'onglet de réponse. Vous pouvez y trouver exactement ce qui s'est passé.

public function checkAttribute(Request $request)
{
    if($request->ajax())
    {
        return response()->json($request->all());
    }
}


0 commentaires