Passer un paramétre de javascript à spring controller

Signaler
Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021
-
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
-
Bonjour,

Je bloque sur un problème depuis plus que 3 jours. J'aimerais envoyer un paramétre de javascript vers un controleur spring. Mais j'obtiens toujours cette erreur: jquery.min.js:5 POST http://localhost:8080/geolocalisations/getLocations 403

Voici le code:
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  	 var lat ="ss";
       $.ajax({

            url: "/geolocalisations/getLocations",
			
			
            type: 'POST',

            data:  lat,             

            dataType: "html",          

            contentType: 'application/json',

            mimeType: 'application/json',

             success: function(data){ 

               console.log(data);              

                return false;      } 

        }); 
      
    </script>


et ç'est mon code dans le controleur:

	  @RequestMapping(value="/geolocalisations/getLocations",method = { RequestMethod.GET, RequestMethod.POST }, produces = MediaType.APPLICATION_JSON_VALUE) 
	  public String getLocations(@RequestParam(value="data", required = false) String data) 
	  { System.out.println("coming in controller    " +data );
	    return "geolocation"; }



Merci d'avance


Configuration: Windows / Chrome 90.0.4430.85

10 réponses

Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448
Bonjour
Le message Erreur 403, ou "accès interdit" indique que le serveur refuse d'exécuter une requête qu'il a pourtant comprise. Il s'agit d'une erreur http qui indique purement et simplement un accès refusé.
Ca ne semble donc pas être un souci côté JavaScript.
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448
L url est-elle la bonne ?
Arrives-tu à l'afficher dans le navigateur en direct ?
Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021
>
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021

oui ça marche bien.

Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021

Merci pour votre réponse, est ce que vous avez une idée comment résoudre ce problème? j'ai cherché dans plusieurs pages, mais sans succés.
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448
Par contre dans ton appel Ajax, tu demandes une réponse au format JSON.
Or ce n'est pas le cas dans la réponse que tu envoies.

Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021

J'ai changé comme suit, mais l'erreur persiste

 <script>
 	 var lat = {"lat":  "lat"};
       $.ajax({

            url: "/geolocalisations/getLocations",
			
            type: 'POST',

            data:  lat,             

            dataType: "html",          

            contentType: 'application/json',

            mimeType: 'application/json',

             success: function(data){ 

               console.log(data);              

                return false;      } 

        }); 
      
    </script>
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448
Retire également le mimetype.
Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021

C'est bon, j'ai retiré mais le problème persiste
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448
Essaie de voir du côté du CSRF

protected void configure (HttpSecurity http) throws Exception {
    http.csrf().disable();
} 

Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021

Est ce qu'il faut ajouter cette méthode dans le contrôleur?
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448
Là, c'est du spring... Et je ne saurais pas te répondre.
Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021

Car je suis encore débutant, d'après ce que j'ai cherché il faut la mettre dans une classe de configuration
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448
Ouvre une question dans le forum Java.
Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021

C'est bon, l'erreur de 403 a été éliminée, par contre une nouvelle erreur est apparue, en éliminant l'option required=false.

There was an unexpected error (type=Bad Request, status=400).
Required request parameter 'data' for method parameter type String is not present
org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'data' for method parameter type String is not present

Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448
Peut-être parce que tu envoies une variable qui s'appelle lat et non data.
Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021

non parce que j'ai essayé avec data dans javascript mais la même erreur persiste. Je bloque vraiment sur ce pb
Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021

aussi en copiant cet url dans le browser: http://localhost:8080/geolocalisations/getLocations?data=kk , j'ai eu le résultat souhaité. Donc le problème c'est dans le javascript
Messages postés
32276
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
3 mai 2021
3 448 >
Messages postés
29
Date d'inscription
samedi 2 janvier 2021
Statut
Membre
Dernière intervention
1 mai 2021

Je n'ai jamais dit que ça ne venait pas du JavaScript... Je t'ai dit qu'en l'état actuel de ton code le nom de la variable que tu envoies s'appelle lat. ... Et non pas data...