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 :

Ajax et $.get()


Sujet :

AJAX

  1. #1
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 48
    Par défaut Ajax et $.get()
    Bonjour,

    J'essaie de passé en paramètre d'une url un identifiant jusqu'à mon routeur ( architecture MVC ) via $.get() mais ça ne fonctionne pas. Quand je fais un print_r pour tester il ne me renvoi pas l'id mais tout le code de la page (sûrement parce que je reste sur cette même page ). Quand je fais un extract de $_GET ça ne fonctionne pas non plus.

    Ce que j'essaie de faire c'est en fonction de l'id, appeler une requête différente dans mon contrôleur.

    Javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        orderByDateAsc(){
            $(this.dateAsc).click(function () {
                let url = index.php?action=customer-reviews&id=date-asc;
                this.id = CustomerReview.getParamURLbyName('id', url);
                $.get(url, {id:this.id}, function (data) {
                    alert(data);
                });
                return false;
            })
        }
    Routeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        elseif ( $_GET['action'] == 'customer-reviews' ) {
              $this->ctrlCtReviews->ctReviewsPage();
                     if ( isset($_GET['id']) && !empty($_GET['id'])){
                          extract($_GET);
                             if ($id == 'date-asc'){
                                  $this->ctrlCtReviews->ctReviewsPage($_GET['id']);
                             }
                     }
    }
    Controleur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        
        public function ctReviewsPage($id = null){
                if ($id == null){
                    $comments = $this->comments->orderBySpam();
                }
                elseif ($id == "date-asc"){
                    $comments = $this->comments->orderByDateASC();
                }....

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Il manque des guillemets à cette ligne :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    let url = index.php?action=customer-reviews&id=date-asc;
    Dans la console F12, tu aurais vu un message du genre “invalid assignment left-hand side”.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 48
    Par défaut
    Coucou,

    J'avais corrigé entre temps, mais ça ne fonctionne toujours pas. J'ai apporté quelques modification, sans ajax, en rechargeant la page, mes requêtes se chargent bien en fonction des $conditions que j'ai passé.

    Maintenant, quand je fais un console.log() ou un alert() il me récupère la page entière avec les nouvelles données. Alors qu'en fait je veux juste actualisé les données. Je pense que le problème vient de la structure MVC et de la vue générée mais je ne sais pas comment régler ça.

    routeur
    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
     
         elseif ( $_GET['action'] == 'customer-reviews' ) {
                                    extract($_GET);
                                    if (!isset($_GET['id'])){
                                        $condition = 'defaut';
                                    }
                                    elseif ($id == "dateASC"){
                                        $condition = 'dateASC';
                                    }
                                    elseif ($id == "dateDESC"){
                                        $condition = 'dateDESC';
                                    }
                                    elseif ($id == "noteASC"){
                                        $condition = 'noteASC';
                                    }
                                    elseif ($id == "noteDESC"){
                                        $condition = 'noteDESC';
                                    }
                                    elseif ($id == "produitASC"){
                                        $condition = 'produitASC';
                                    }
                                    elseif ($id == "produitDESC"){
                                        $condition = 'produitDESC';
                                    }
                                    $this->ctrlCtReviews->ctReviewsPage($condition);
    controleur
    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
    public function ctReviewsPage($condition)
            {
                $comments = $this->comments->orderBySpam();
                $dateASC = $this->comments->orderByDateASC();
                $dateDESC = $this->comments->orderByDateDESC();
                $noteASC = $this->comments->orderByNoteASC();
                $noteDESC = $this->comments->orderByNoteDESC();
                $produitASC = $this->comments->orderByProduitASC();
                $produitDESC = $this->comments->orderByProduitDESC();
                switch ( $condition ) {
                    case 'defaut':
                        $this->tableau = ['comments' => $comments];
                        break;
                    case 'dateASC':
                        $this->tableau = ['comments' => $dateASC];
                        break;
                    case 'dateDESC':
                        $this->tableau = ['comments' => $dateDESC];
                        break;
                    case 'noteASC':
                        $this->tableau = ['comments' => $noteASC];
                        break;
                    case 'noteDESC':
                        $this->tableau = ['comments' => $noteDESC];
                        break;
                    case 'produitASC':
                        $this->tableau = ['comments' => $produitASC];
                        break;
                    case 'produitDESC':
                        $this->tableau = ['comments' => $produitDESC];
                        break;
                }
                $this->vue->generateView($this->tableau);
            }
    javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    orderBy(idLien){
            $(idLien).click(function (e) {
                let url = $(idLien).attr('href');
                this.id = CustomerReview.getParamURLbyName('id', url);
                $.get(url, {id:this.id}, function (data) {
                    console.log(data);
                });
                e.preventDefault();
            });

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,


    Avertissement
    N'utilisez pas extract() sur des données non sûres comme les entrées utilisateur (ex. $_GET, $_FILES).
    De plus, nous balancer du code sans la moindre explication ni commentaires ne va pas aider beaucoup...
    ex. :
    • $_GET['action'] : ça vient d'où ?
    • alert(), console.log().... : de quoi ? où ?

  5. #5
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2019
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 48
    Par défaut
    $_GET['action'] ça vient d'un lien présent dans la vue.
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a id="date-desc" href="index.php?action=customer-reviews&id=dateDESC">...
    Pour le console.log, c'est quand je fais un print_r de ma requête sur mon routeur

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2010, 23h02
  2. [AJAX] Un Get en Ajax récalcitrant
    Par bigbentem dans le forum AJAX
    Réponses: 2
    Dernier message: 08/09/2009, 18h04
  3. [AJAX] Requete GET sur un fichier php
    Par Julleb dans le forum AJAX
    Réponses: 6
    Dernier message: 21/05/2009, 12h12
  4. Réponses: 4
    Dernier message: 03/02/2009, 10h59
  5. [jQuery]Ajax et get avec un fichier php
    Par zabibof dans le forum jQuery
    Réponses: 3
    Dernier message: 08/07/2008, 09h32

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