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

JavaScript Discussion :

Récuperation de données JSON


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Récuperation de données JSON
    Bonjour,

    J'ai un systeme d'upload d'images en ajax qui fonctionne , lorsque j'upload une image mon systeme contact la page upload.php qui contient ce code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $file = $_FILES['file'];
    if(filesize($file['tmp_name']) > 1000000){
       die('{"error":true, "message": "Image trop grande"}'); 
    }
    move_uploaded_file($_FILES['file']['tmp_name'],'img/upload/'.$_FILES['file']['name']);

    Ce code fonctionne et upload mon image si la taille est bonne et me renvoie bien le message "Image trop grande" dans la console si la taille de l'image n'est pas bonne.

    En revanche je veux afficher cette erreur à l'utilsateur en utilsant un alert, du coup dans mon script sur ma page medias.php je fais cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uploader.bind('FileUploaded',function(up, file, response){
        data = jQuery.parseJSON(response.response);
        if(data.error){
            alert(data.message); 
        }
    });
    Mais je n'ai pas d'alert lors d'une erreur et la console me dit "anonymous function" sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data = jQuery.parseJSON(response.response);

    Je vous mets le script complet au cas où :

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
     
    <script type="text/javascript">
    var uploader = new plupload.Uploader({
    	runtimes : 'html5,flash',
    	containes: 'plupload',
    	browse_button: 'browse',
    	drop_element : "droparea",
    	url : '<?php echo site_url()."/upload";?>',
    	flash_swf_url: '<?php echo base_url()."js/plupload/plupload.flash.swf";?>',
    	multipart : true,
    	urlstream_upload:true,
    	multipart_params:{directory:'test'},
    	//max_file_size : '1mb',
    	filters : [
    		{ title : 'Images', extensions : 'jpg,jpeg,png,gif' }
    	]
    });
     
    uploader.bind('UploadProgress',function(up, file){
    	console.log(file);
    	$('#'+file.id).find('.progress').css('width',file.percent+'%');
    })
     
    uploader.init();
     
    uploader.bind('FilesAdded',function(up,files){
    	var filelist = $('#filelist');
    	for(var i in files){
    		var file = files[i];
    		filelist.prepend('<div id="'+file.id+'" class="file">'+file.name+' ('+plupload.formatSize(file.size)+')'+'<div class="progressbar"><div class="progress"></div></div></div>');
    	}	
    	$('#droparea').removeClass('hover');
    	uploader.start();
    	uploader.refresh();
    });
     
    uploader.bind('Error',function(up, err){
    	alert(err.message);
    	$('#droparea').removeClass('hover')
    	uploader.refresh();
    });
     
    uploader.bind('FileUploaded',function(up, file, response){
        data = jQuery.parseJSON(response.response);
        if(data.error){
            alert(data.message); 
        }
    });
     
     
    jQuery(function($){
     
    	$('#droparea').bind({
    	   dragover : function(e){
    	       $(this).addClass('hover'); 
    	   },
    	   dragleave : function(e){
    	       $(this).removeClass('hover'); 
    	   }
    	});
     
    })
    </script>

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    et il est ou le JSON ?

    Le PHP on s'en moque. Ce qui est important c'est la réponse du serveur.
    tu dis que tu n'arrives pas à lire le JSON, mais tu nous donnes tout sauf le JSON

    A+JYT

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Merci pour ta réponse, c'est ma première fois avec du JSON donc il y a peut etre quelque chose qui m'echappe, mais normalement il est dans mon fichier upload.php dont j'ai donné le code au début :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $file = $_FILES['file'];
    if(filesize($file['tmp_name']) > 1000000){
       die('{"error":true, "message": "Image trop grande"}'); //ICI MON JSON  
    }
    move_uploaded_file($_FILES['file']['tmp_name'],'img/upload/'.$_FILES['file']['name']);

    Peut etre que j'ai mal expliqué mon problème mais j'ai le JSON qui s'affiche dans ma console lorsqu'une image est trop grande.
    Mon problème est d'ensuite recuperer ce JSON dan ma page medias.php à travers la fonction donné dans mon précédent post.
    Il ne rentre pas dans ma boucle if(data.error) car il m'affiche dans la console que la ligne data= jQuery.parseJSON est une function anonyme et je ne sais pas pourquoi il me dit cela

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    bonjour.
    ouvre le debuger et place un point d'arrêt sur cette ligne.

    avant d'appeler parseJSON regarde les valeur de response et response.presponse

    pour tes prochaines questions lits les règles du forum.
    1) ne pas poster le code côté serveur
    tu ouvre ton navigateur sur la page et tu affiche le source (ou le débuguer)
    c'est ce code là qui est exécuté en js pas le code côté serveur
    donc pour toute question JS poste le code HTML vu du navigateur et le JS vu du navigateur Donc jamais de PHP d'ASP de JSP etc.

    2) tu utilise JQuery et tu as un problème en utilisant une méthode de JQuery. ta question est donc à poster dans le forum JQuery. tu auras beaucoup plus de chance d'avoir une réponse approprié. de plus cela permettra au autres de trouver la discussion.

    3) pour JSON seul le fragment JSON retourné concerne ce forum. la façon de générer ce fragment ne concerne que les forum ASP JSP PHP etc. il convient donc de poster la réponse JSON et de ne pas le noyer dans le code du serveur.


    enfin vu que tu a posté ton code PHP je vais intervenir dessus.
    quelque soit le langage il n'est pas conseillé d'écrire un fragment JSON avec des String.
    de même l'usage de die est discutable. pour une fonction un script (a moins d'optimisations particulières) il est conseillé d'avoir un point d'entrée et un point de sortie.

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $reponse = array("error" => false); //a priori pas d'erreur
    $file = $_FILES['file'];
    if(filesize($file['tmp_name']) > 1000000){
       $reponse["error"]=true;
       $reponse["message"]=Image trop grande;
    } else {
       move_uploaded_file($_FILES['file']['tmp_name'],'img/upload/'.$_FILES['file']['name']);
    }
    header('Content-type: application/json');
    echo json_encode($reponse );
    en utilisant json_encode tu est sur que ce que tu retourne est bien un fragment JSON
    ensuite que ta réponse soit OK ou KO c'est toujours un fragment JSON

    dans ton code si l'image est ok la réponse n'était pas un JSON

    A+JYT
    PS: cette discussion php devrait se faire dans le forum php

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    En effet désolé d'avoir mis le code php mais n'arrivant pas trop a identifier mon problème je me suis dit que ça pourrait aider .

    Sinon merci pour ta réponse ça marche maintenant

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

Discussions similaires

  1. [JSON] récuperation des données
    Par highman dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/06/2007, 10h28
  2. Récupere les données d'un dataGrid
    Par Terminator dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/10/2005, 14h05
  3. [JTable] Comment récuperer les données d'un fichier texte ?
    Par Makunouchi dans le forum Composants
    Réponses: 2
    Dernier message: 03/05/2005, 16h37
  4. Réponses: 5
    Dernier message: 22/12/2004, 16h13
  5. Comment récuperer des données entrées au clavier?
    Par Elisée A. dans le forum MFC
    Réponses: 2
    Dernier message: 13/02/2004, 07h22

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