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

jQuery Discussion :

Ajax ne répond pas


Sujet :

jQuery

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 90
    Points : 62
    Points
    62
    Par défaut Ajax ne répond pas
    Bonjour,

    Voila j'explique mon problème.

    J'ai une page index.php qui fait appel à de l'ajax. Cet ajax fait appel dans son url à une page reponse.php.
    Dans cette page reponse.php, j'ai créé une liste déroulante avec des données d'un fichier chargé. Juste en dessous j'ai un bouton de type submit qui doit faire appel à une fonction qui se trouve dans un fichier php.
    Le problème que j'ai est que j'ai bien ma liste déroulante et mon bouton qui sont créé. Mais quand on appuie sur le bouton, rien ne se passe.

    Voici une partie de reponse.php :
    Code php : 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
     
    if ($nbFeuille > 1){
    	echo 'Vous avez '.$nbFeuille.' feuilles dans votre classeur</br>';
    	// affiche le nom des feuilles
    	$nomFeuille = $objet->getSheetNames();
    	//liste les feuilles du classeur
    	echo 'Avec quelle feuille voulez_vous travailler ?';
    	echo '<form method="POST" id="listeFeuille" >
    		<select name="choixFeuilles">';
    	foreach($nomFeuille as $AfficheNom){
    		echo '<option>'.$AfficheNom."</br>".'</option>';						
    	}
    	echo'</select>
    		<input type="submit" value="Valider" id="boutonexcel" />
    		</form>';
    	exit;
    }else{
    	reponseExcel($objet);
    }

    Et voila ce qu j'avais fait en jQuery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $('#listeFeuille').on('submit',function(){
    	console.log('coucou');
    	reponseExcel($objet);
    });
    J’espère avoir été clair dans mon problème.
    Merci pour l'aide que vous m'apporterez.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Salut,

    Et tu es allé voir la doc ?

    Je vois pas de requête dans ton code. Ce devrait être un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $('#listeFeuille').on('submit',function(){
    $.ajax({
      method: "POST",
      url: "some.php", // adresse de ton script php
      data: { name: "John", location: "Boston" } // Variables à transmettre au serveur (facultatif)
    })
      .done(function( objet ) {
        console.log(objet );
      });
     
    });
    Il existe aussi des raccourcis pour faire la même chose en moins de lignes, je préfère cette méthode générique moins sobre mais plus explicite pour tout le monde.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 90
    Points : 62
    Points
    62
    Par défaut
    Merci pour ton aide ARCIWEB
    voila ce que j'ai fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $('#listeFeuille').on('submit',function(){
    	$.ajax({
    		method:'POST',
    		url:'fonction.php',
    	})
    		.done(function(objet){
    			console.log(objet);
    		});
    	});
    url c'est ou se trouve ma fonction? (dans cette page fonction.php j'ai plusieurs fonction)
    j'ai essayer plusieurs chose mais il se passe toujours rien

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Ajax fait une requête au serveur, ce qui veut dire que le processus va appeler un fichier du serveur en lui transmettant des données via la méthode post ou get suivant ce que tu mets dans "method" (ici j'ai mis post). "url" est l'adresse du fichier sur le serveur par rapport au script ajax.

    Si le script ajax est dans le même répertoire que le fichier "reponse.php" que tu veux appeler, il faut donc mettre url:'reponse.php'. Et pas de virgule pour terminer si c'est la fin des paramètres. Soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $('#listeFeuille').on('submit',function(){
    	$.ajax({
    		method:'POST',
    		url:'reponse.php'
    	})
            .done(function(objet){
    		console.log(objet);
    	});
    });
    Dans cette exemple puisque tu ne renseignes pas "data" aucune donnée ne sera transmise vers "reponse.php".

    Le résultat qui sera affiché dans le fichier 'reponse.php' sera transmis dans "done". J'ai mis "objet" pour récupérer le résultat par symétrie puisque tu affichais une variable qui se nommait "objet" côté php, mais en fait peu importe. Tu pourrais faire aussi ... .done(function(toto) {console.log(toto); ... pour récupérer le même résultat, tu choisis le nom que tu veux et c'est totalement indépendant de comment est construit l'affichage dans ton fichier "reponse.php".

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    submit ou ajax... il faut choisir ...
    tu n'inhibes pas la soumission du formulaire la page se recharge, tu perds ton appel ajax ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Ah oui j'ai recopié l'exemple de la doc, puis ensuite corrigé la syntaxe, mais oublié de l'adapter à un submit. Pour un exemple complet avec un formulaire il y a donc deux solutions :

    - soit utiliser un type button à la place du type submit dans le html et faire : $("#boutonexcel").on('click',function(){...

    - soit annuler le comportement par défaut du submit avec event.preventDefault();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $('#listeFeuille').on('submit',function(event){
        event.preventDefault();
        $.ajax({
               //...
    A noter que la deuxième solution est la seule qui puisse fournir une alternative avec javascript désactivé et qui permet par ailleurs l'enregistrement des input de type password par les navigateurs (donc recommandé pour les formulaires d'authentification sauf si on veut désactiver la possibilité de mémorisation des mots de passe).

Discussions similaires

  1. [AJAX] Fonction $.ajax qui ne répond pas
    Par sub_zero dans le forum jQuery
    Réponses: 2
    Dernier message: 16/01/2015, 12h18
  2. Réponses: 0
    Dernier message: 21/08/2014, 10h10
  3. [AJAX] Destruction d'objet ajax qui ne répond pas
    Par boubacach dans le forum AJAX
    Réponses: 4
    Dernier message: 27/05/2009, 10h12
  4. [TOMCAT] Tomcat ne répond pas au bout de quelques jours
    Par Bartuk dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 02/03/2006, 17h38
  5. [AJAX] Ajax ne réactualise pas le javascript ?
    Par shadowbob dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 23/01/2006, 08h26

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