IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

Modifier mon URL à partir de ma requête


Sujet :

AJAX

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2022
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Modifier mon URL à partir de ma requête
    Bonjour,

    J'ai une requête ajax GET comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    let donnee = {
    				'start' : arg.start,
    				'end' : arg.end,
    			}
    			$.ajax({
            type: 'GET',
            url: '/test',
            data: {donnees: JSON.stringify(donnee)},
            dataType: 'donnees'            
        })
    qui envoie mes donnes à mon controller ('/test').

    Jusqu'à la aucun souci tout fonctionne très bien.

    Ce que je souhaiterais maintenant, c'est intégrer dans l'URL de ma page de manière asyncrhone, les données reçu vai la rêquete ($_GET['donnees']).

    En effet, étant donnée que la return de ma fonction s'effectue sur la même page, l'URL n'est pas modifié directement alors que j'ai besoin des informations qui y sont contenus dans la requête pour entrer dans mes conditions et lire mes instructions.

    Lorsque je clique sur le resultat de ma requête je vois bien que celle-ci a été envoyé, et ma page est rechargée de la bonne manière avec les données dans l'URL.

    l'Objectif : J'aimerais que l'URL soit modifié directement à l'envoie de la requête ajax sans devoir passer par le click sur le résultat de la requête ou un rechargement de la page


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    /**
         * @Route("/test", name="test", methods={"GET", "POST"})
         */
        public function index(?Calendar $calendarr, CalendarRepository $calendary, Request $request, $_route): Response
        {
     
            // $request = json_decode($request->getContent());
     
            // $referer = (string) $request->headers->get('referer'); // get the referer, it can be empty!
     
            // $refererPathInfo = Request::create($referer)->getPathInfo();
     
            // $routeInfos = $this->router->match($refererPathInfo);
     
            // dd($request);
     
            $query = $this->entityManager->createQuery(
                'SELECT c
                    FROM App:Calendar c
                WHERE c.title != :title
                ORDER BY c.title ASC'
            )->setParameter('title', 'indisponible');
            $calendar = $query->getResult();
     
            $calendars = new Calendar;
            $form = $this->createForm(CalendarType::class, $calendars);
            $calendrier = $calendary->findAll();
            $code="";//initialisation
            $codeSelect='';//initialisation
     
     
     
             if (isset($_GET['donnees'])){
     
            // dd('test');
     
            /** Je met ma requête ajax(GET) dans une variable :
             * Etant donnée qu'ell est en string() je délimite la bout concernant a START
             * Et le bout concernant END
             */
            $url = $_GET['donnees'];
            $urlStart = substr($url,10,24);
            $urlEnd = substr($url,43,-2);

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour afficher du code sur ce forum, il vaut mieux le mettre en balise "code" avec le bouton # dans l'éditeur.

    quand vous dites "pour entrer dans mes conditions", vous testez ces conditions dans la suite du code javascript après l'appel ajax ?

  3. #3
    Membre habitué Avatar de two3d
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2012
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2012
    Messages : 126
    Points : 168
    Points
    168
    Par défaut
    Il existe history.pushState() en JS pour modifier l'URL sans la recharger :

    https://developer.mozilla.org/en-US/...tory/pushState

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.history.pushState({}, '', '?var=mavar');
    Par contre il y aura aucun effet sur le PHP présent car c'est dynamique, le PHP étant statique une fois chargé.

Discussions similaires

  1. Afficher une vidéo sur mon site à partir d'une url ou permalien comme facebook ?
    Par shivato dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 24/06/2010, 11h08
  2. Récupérer le code SQL à partir d'une requête
    Par Edith_T dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 23/11/2004, 14h10
  3. Réponses: 2
    Dernier message: 02/11/2004, 12h38
  4. [C#] Popup - Modifier l'url de la fenetre appelante
    Par dacamp dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/05/2004, 12h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo