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] le resultat du xlhttprequest, est un script "header"


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Par défaut [AJAX] le resultat du xlhttprequest, est un script "header"
    Bonjour,

    Voila j'utilise ajax pour pouvoir exporter les fiches cochés.

    Seulement, lorsque je fait alert(sData); j'ai le header qui s'affiche dans une popup(c'est un fichier excel)...alors que je voudrais juste que ce fichier soit proposer a l'enregistrement a l'utilisateur.

    y a t'il un moyen de renvoyé un header() par l'intermédiaire d'un xmlhttprequest ?

  2. #2
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Salut,

    C'est plutôt très vague tout ça... Pourquoi vouloir créer un fichier excel en ajax plutôt que de rediriger directement vers la page de traitement, qui retournerait le document excel?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Par défaut
    En fait, j'ai une liste de checkbox (une pour chaque fiche) et je voudrais que l'utilisateur une fois coché chaque fiche, clic sur "télécharger" et la, il y a plusieurs fois le "enregistrer sous" qui apparait.
    mon soucis viens du fait que sur la page ou il y a les checkbox, il y a déjà des formulaires, du coup, je valide le formulaire "téléchargement" par ajax.

    voici le code JS :

    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
    // fonction de validation des formulaires
    function export_selection(monFormulaire,monNb) {
    	var xhr = getXMLHttpRequest();
    	var retour = "";
    	var mesValeurs = "";
    	var nbExport = 0;
    	if(xhr && xhr.readyState != 0) {
    		xhr.abort(); 
    	}
    	for (i=1;i<=monNb;i++){
    		if(document.getElementById(i).checked == true){
    			nbExport++;
    			mesValeurs = document.getElementById(i).value + "|" + mesValeurs;
    			//alert("i = " + i + " valeur = " + document.getElementById(i).value);
    		}
    	}
    	var longueur = mesValeurs.length;
    	mesValeurs = mesValeurs.substring(0,longueur - 1);
    	//alert(mesValeurs);
    	if (mesValeurs == ""){
    		alert("vous devez cochez au moins une fiche");
    		return;
    	}
     
    	var retour = "liste=" + mesValeurs;
    	//on traite les retours
    	xhr.onreadystatechange = function() { 
    		//alert (xhr.readyState+"-"+xhr.status);
    		if(xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
    			//alert("tutu");
    			resultatExportSelection(xhr.responseText);
    		}
    	}
    	//on envoi 
    	xhr.open("POST", "include/exports/export_resultats_selection.php", true);
    	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	//alert("form="+ monFormulaire + "&" + retour);
    	xhr.send("form="+ monFormulaire + "&" + retour + "&nbExport=" + nbExport);
    }
    // traitement aprés validation des formulaires
    function resultatExportSelection(sData) {
    	alert(sData);
    }
    et voici le code php de generation du fichier xls (fichier :export_resultats_selection.php)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    //echo "*".$_POST['nbExport']."_";
    include ('../functions.php');
    $monTab = explode("|",$_POST['liste'],$_POST['nbExport']);
    $count = count($monTab);
    $affiche = "";
    for ($i=0;$i<$count;$i++){
    	exportCRE($monTab[$i]);
    }
     
    ?>
    la fonction exportCRE() prend en paramètre l'identifiant d'une fiche et créée le fichier xls sur le disque pour le renvoyé au navigateur.

  4. #4
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Désolé, je ne comprends pas. Je passe la main.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Par défaut
    erf...

    j'ai un formulaire avec des checkbox, je le valide avec ajax.

    dans la fonction export_selection, je recupere les valeur pour les envoyées vers le fichier : export_resultats_selection.php
    qui contient, la fonction de generation du fichier xls sur le disque dur.
    le script de generation du fichier xls (la fonction exportCRE() donc), contient :

    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
     
    <?php
     
    // ouverture du template, remplissage, enregistrement sur le disque.
     
     
     
    // fix for IE catching or PHP bug issue
    header("Pragma: public");
    header("Expires: 0"); // set expiration time
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    // browser must download file from server instead of cache
     
    // force download dialog
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");
     
    // use the Content-Disposition header to supply a recommended filename and
    // force the browser to display the save dialog.
    header("Content-Disposition: attachment; filename=".basename($filename).";");
     
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: ".filesize($filename));
     
    @readfile($filename);
    //exit(0);
    ?>
    du coup ce qui ce trouve dans sData, c'est les header precedent.
    et donc tout ca s'ouvre dans une popup, je voudrais pouvoir les renvoyés au navigateur, sans popup

  6. #6
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Ne fais pas un téléchargement via AJAX.
    Pour valider ton formulaire, pourquoi pas mais pour le téléchargement passe plutôt par un iframe caché.
    ERE

    EDIT
    ----
    Rapproche toi de ce post http://www.developpez.net/forums/d53...anche-ouverte/

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Par défaut
    merci, mais je sais pas trop comment utiliser l'iframe dans mon cas Oo
    je suis deja pas super douer en ajax (j'ai bidouiller ce truc que je reutilise a chaque fois lol) alors mettre une iframe je sais pas trop

    dans le open() ?

  8. #8
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Citation Envoyé par hoaxpunk Voir le message
    merci, mais je sais pas trop comment utiliser l'iframe dans mon cas Oo
    je suis deja pas super douer en ajax (j'ai bidouiller ce truc que je reutilise a chaque fois lol) alors mettre une iframe je sais pas trop

    dans le open() ?
    Tu as lu le post proposé ? Sur le principe ce n'est que du HTML.

    ERE

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Par défaut
    ...

    j'ai modifier ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    //echo "*".$_POST['nbExport']."_";
    include ('../functions.php');
    $monTab = explode("|",$_POST['liste'],$_POST['nbExport']);
    $count = count($monTab);
    $affiche = "";
    for ($i=0;$i<$count;$i++){
    echo "<iframe name='iframe_telechargement' id='iframe_telechargement' height='150' width='900' src='' style='visibility:hidden;display:none;'>";
    	exportCRE($monTab[$i]);
    echo "</iframe>";
    }
     
    ?>
    mais c'est toujours dans la popup que s'affiche le code -_-

    je suis désolé, mais je suis un peu a la rue la je dois dire...

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Par défaut
    bon, je ne sais pas du tout ou aller, je suis a la rue complet, si vous aviez une pti coup de pouce, ou une piste, parce que la, je dois dire que je ne vois pas du tout

  11. #11
    Membre Expert
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Par défaut
    Je n'ai toujours pas tout compris à ce que tu fais mais j'essaie :

    1. tu valides avec AJAX la saisie
    2. au retour sur le poste client, si c'est bon tu passes les paramètres nécessaires à la génération de ton fichier Excel et tu valides un second formulaire qui appelle ta page PHP de génération du flux Excel et qui renvoie le résultat dans un Iframe caché
      Tu crées un iframe caché, dans ton code HTML
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
       
      <iframe name="iframe_telechargement" id="iframe_telechargement" height="0" width="0" src="" style="visibility:hidden;display:none;"></iframe>
      puis tu associes un formulaire:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      <form method="post" id="form_lancer_telechargement" action="export_resultats_selection.php" target="iframe_telechargement">
      <input type="hidden" id="param1" name="param1" value="" />
      </form>


    Note que à mon avis tu devrais sûrement tout faire en une seule étape, sans AJAX. Mais essaie déjà comme tu as commencé.


    ERE

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 220
    Par défaut
    merci bcp, avec les idées claires et une bonne nuit de sommeil j'ai réussi a m'en sortir.


    merci encore

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

Discussions similaires

  1. [AJAX] disparition resultat php en ajax
    Par jlbellay dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/04/2008, 19h06
  2. [AJAX] A votre avis : quelle est la meilleure solution ?
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/03/2008, 11h57
  3. Qui pourrait nous dire quel est le script utilisé ?
    Par ..::snake::.. dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 19/09/2007, 14h25
  4. [AJAX] affichage resultat XML dans div ?
    Par Overstone dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/08/2007, 13h47
  5. [AJAX] Savoir si un site est en Ajax ou Web 2.0
    Par Seth77 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 14/12/2006, 20h17

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