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] Passer une image par AJAX


Sujet :

AJAX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 15
    Points : 13
    Points
    13
    Par défaut [AJAX] Passer une image par AJAX
    Bonjour, je suis confronté à un petit soucis

    Je cherche à faire passer une image (.gif) par AJAX.

    En gros je veux que le XhrObj.responseText renvoie une image lue via PHP.

    Mon code est le suivant

    Fichier JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    XhrObj.open("GET", "script.php");
     
    XhrObj.onreadystatechange = function() {
    	if (XhrObj.readyState == 4 && XhrObj.status == 200) {
    		content.innerHTML = XhrObj.responseText ;
    		}
    	}    
     
    XhrObj.setRequestHeader("Content-Type", "image/gif"); 
    XhrObj.send(null);
    script.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php	
    $url="http://www.sitedistant/image.gif";
    header('Content-type: image/gif');
    readfile($url); 
    exit;
    ?>

    Malheureusement en retour j'ai le code brut de l'image
    alors qu'en appelant directement script.php ça marche.

    J'ai pourtant essayé de déclarer le bon header dans lors de l'appel, je me mélange les pinceaux qq part ?

    Une idée ?

    Merci

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Pourquoi as-tu besoin d'AJAX pour afficher une image ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    content.innerHTML = '<img src="http://www.sitedistant/image.gif" alt="Imge" />
    est largement suffisant.

    Au pire, si la requête est destinée à te renvoyer l'URL de l'image, fais juste un echo de cette URL et au retour de ta requête, utilise cette donnée pour écrire ta balise.

    En tout état de cause, la seule façon d'afficher une image, c'est d'utiliser la balise idoine...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Profil pro
    à la bougie alors
    Inscrit en
    Mai 2006
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : à la bougie alors

    Informations forums :
    Inscription : Mai 2006
    Messages : 224
    Points : 362
    Points
    362
    Par défaut
    Même question que Bovino par curiosité. Et s'il ne s'agit que d'afficher l'image sa réponse est la meilleure. Toutefois, une alternative est de :

    préfixer le flux encodé en base64 de 'data:image/gif;base64,' et le mettre dans l'attribut src d'une balise IMG.

    Soit: dans le php, générer le préfixe puis ajouter le retour de readfile() encodé en base64

    XhrObj.responseText devrait donc contenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data:image/gif;base64,<flux encodé base64>
    et pour l'afficher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    img.src = XhrObj.responseText

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Merci pour vos réponses. L'image en question, chose curieuse, n'est pas affichée par le navigateur quand on demande de charger son URL : il propose de la télécharger....

    Ca passe par contre avec vos deux méthodes, donc c'est plus nécessaire de passer l'image dans le flux, j'ai fait un mix en passant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    img.src = XhrObj.responseText
    , où XhrObj.responseText contient simplement l'URL récupérée par AJAX.

    Merci !

Discussions similaires

  1. [AJAX] Générer une image en ajax
    Par Meloooo dans le forum AJAX
    Réponses: 10
    Dernier message: 05/04/2011, 16h07
  2. [AJAX] appeler une fonction par ajax
    Par k4444a dans le forum AJAX
    Réponses: 3
    Dernier message: 18/04/2009, 20h14
  3. [AJAX] Afficher une image avec ajax
    Par Mister Nono dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/11/2007, 19h23
  4. Réponses: 2
    Dernier message: 13/06/2007, 15h40
  5. [AJAX] Rafraichir une image
    Par fragmonster dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 01/11/2006, 13h13

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