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 :

Redirection après un upload [AJAX]


Sujet :

jQuery

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut Redirection après un upload
    Bonjour,

    J'ai un script d'Upload avec une progressbar malheureusement ce script affiche le résultat avec un xhr.responseText et je voudrais qu'il recharge la page avec les infos $_FILES.

    ci-joint le formulaire index.php
    Code html : 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
    <div id="main">
      <form id="uploadForm" action="index.php?lang=<?php echo $lang; ?>" method="POST" enctype="multipart/form-data">
     
          <input id="uploadImg" name="image" type="file" accept=".jpg,.png,.gif,image/png,image/jpg,image/gif">
     
          <input type="submit" name="Submit" value="Charger le fichier">
     
      </form>
      <div id="uploadProgress">
        <h1>Chargement...</h1>
        <div id="uploadProgressBar" class="progressBar"><span style="width: 0%"></span></div>
        <p id="uploadProgressPercent"></p>
      </div>
      <!--uploadProgress-->
      <div id="uploadResult">
        <h1>Resultat</h1>
        <p></p>
      </div>
      <!--uploadResult-->
    </div>


    le code javascript

    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
    $(document).ready(function(){
    	$("#uploadForm").ajaxForm({
    		// attache l'événement au formulaire.
    		beforeSend: function(){
    			// avant l'envoi du fichier
    			$("#uploadProgressPercent").html("Chargement en cours");
    			$("#uploadResult").fadeOut(400, function(){
    				$("#uploadProgress").fadeIn();
    			});
    		},
    		uploadProgress: function(event, position, total, percent){
    			// pendant l'envoi du fichier
    			$("#uploadProgressBar > span").width(percent+'%');
    			$("#uploadProgressPercent").html(percent+'%');
    		},
    		success: function(){
    			// après l'envoi du fichier
    			$("#uploadProgressBar > span").width('100%');
    			$("#uploadProgressPercent").html("Chargement terminé");
    		},
    		complete: function(xhr){
    			// l'envoi du fichier est terminé
    			$("#uploadResult > div").html(xhr.responseText);
    			$("#uploadProgress").fadeOut(400, function(){
    				$("#uploadResult").fadeIn();
    			});
    		}
    	});
    });
    dans cette même page en haut de la page j'ai mis
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $nomPhoto = $_FILES['image']['name'];

    et après je traite les infos du fichier uploadé, je ne connais pas encore bien javascript/ajax. je sais qu'il faut mettre responseXML mais je n'arrive pas a le mettre en place correctement.

    merci de votre aide, soyez indulgent je débute...

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

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 093
    Points : 6 754
    Points
    6 754
    Par défaut
    Bonjour,

    On n'a besoin de responseXML que dans le cas où le serveur envoie du XML. Et encore, ça ne marche que quand le XML est bien formé. Personnellement je ne m'en suis jamais servi… responseText est plus souple à bien des égards car on peut y faire passer à peu près tout ce qu'on veut, entre autres du code HTML ou du JSON.

    Ton problème n'est pas très clair à cet endroit :
    Citation Envoyé par genesia
    malheureusement ce script affiche le résultat avec un xhr.responseText
    mais je devine que ce « résultat » dont tu parles est le code HTML de la page index.php.

    Je vais expliquer en quelques mots ce qui se passe avec ton code actuel :
    1. L'utilisateur choisit un fichier et l'envoie en cliquant sur le bouton submit.
    2. Là, ta fonction ajaxForm prend le relais : l'envoi classique du formulaire est annulé, une requête Ajax est faite à la place.
    3. L'adresse utilisée pour la requête est celle de l'action du formulaire, c'est donc la page index.php qui répond.

    Ta page index.php doit faire la différence entre un premier accès et une soumission du formulaire. Pour ça tu peux vérifier la présence de $_POST['Submit'] avec isset, ou bien vérifier qu'il y a quelque chose dans le tableau $_FILES avec empty ou count.

    Si tu souhaites que ta page envoie une réponse différente pour les requêtes Ajax spécifiquement, il y a aussi une solution : jQuery ajoute automatiquement un en-tête HTTP quand il fait une requête Ajax.
    Code en-tête HTTP : Sélectionner tout - Visualiser dans une fenêtre à part
    X-Requested-With: XMLHttpRequest
    Tu peux tester cet en-tête côté serveur :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
        'XMLHttpRequest' === $_SERVER['HTTP_X_REQUESTED_WITH']) {
      ...
    }
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2012
    Messages : 50
    Points : 23
    Points
    23
    Par défaut
    Bonjour et merci Watilin,

    Ça a fonctionné, je comprend un peu mieux le fonctionnement de l'ajax.

    bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Upload] PHP - Redirection après envoi d'un upload
    Par ketoum dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2007, 21h15
  2. redirection aprés la créaton d'un cookie
    Par vbcasimir dans le forum Web
    Réponses: 3
    Dernier message: 14/05/2006, 20h28
  3. [Tomcat] Redemarrage obligatoire apres un upload
    Par ShinJava dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 11/07/2005, 14h59
  4. Probleme de redirection apres fermeture de session
    Par soufienne dans le forum ASP
    Réponses: 3
    Dernier message: 08/04/2004, 10h52
  5. [Strategie]Redirection après un formulaire
    Par kyser91 dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 19/03/2004, 15h15

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