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] Script correct ou trop lourd ?


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 101
    Par défaut [AJAX] Script correct ou trop lourd ?
    Bonjour à tous,

    Alors voilà j'ai fait un petit script en Ajax me permettant d'afficher les dernières quotes présentes dans une base de données.
    Cela fonctionne mais n'étant pas très calé en la matière, je me permet de vous le soumettre pour que vous puissiez me dire si je me complique la vie ou pas, si c'est la bonne méthode à adopter et enfin si celle-ci n'est pas trop lourde.

    Autre chose, j'aimerais si possible afficher chargement... pendant la breve attente de l'affichage...


    Voici mon code :

    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
     
     
    // Customise those settings
     
    var seconds = 5;
    var divid = "quotes";
    var url = "http://www.holding-paragon.com/wecitizens/quotes.php";
     
    ////////////////////////////////
    //
    // Refreshing the DIV
    //
    ////////////////////////////////
     
    function showQuotes(){
     
    // The XMLHttpRequest object
     
    var xmlHttp;
    try{
    xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
    }
    catch (e){
    try{
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
    }
    catch (e){
    try{
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e){
    alert("Your browser does not support AJAX.");
    return false;
    }
    }
    }
     
    // Timestamp for preventing IE caching the GET request
     
    fetch_unix_timestamp = function()
    {
    return parseInt(new Date().getTime().toString().substring(0, 10))
    }
     
    var timestamp = fetch_unix_timestamp();
    var nocacheurl = url+"?t="+timestamp;
     
    // The code...
     
    xmlHttp.onreadystatechange=function(){
    if(xmlHttp.readyState==4){
    var lastQuotes = document.getElementById(divid);
    lastQuotes.innerHTML = xmlHttp.responseText;
    setTimeout("showQuotes()",5000);
    }
    }
    xmlHttp.open("GET",nocacheurl,true);
    xmlHttp.send(null);
    }
     
    // Start the refreshing process
     
    var currentQuote = setTimeout(showQuotes,5000);
    Vous pouvez voir ce que ca donne pour le moment sur ce site en haut a droite, pour moi le delai d'affichage est trop long :/

    Lien

    Un tout grand merci !

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    Ton code n'est pas indenté, c'est pas très beau à lire . Je ne sais plus si la fonction showQuotes instancies seulement un XMLHttpRequest ou bien la requête AJAX est inclue, car tu déclares une autre fonction au beau milieu du code.
    Citation Envoyé par vbaguet
    Autre chose, j'aimerais si possible afficher chargement... pendant la breve attente de l'affichage...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     document.getElementById(divid).innerHTML = 'Loadinnnnnnnnnnng';
    xmlHttp.onreadystatechange=function(){
    .....
    A+.

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 101
    Par défaut
    Justement j'aimerais faire au plus simple et je pense avoir fait des doublons...
    C'est pour ca que je fais appel à vous, je suis vraiment pas doué en Ajax, je suis deja content que ca fonctionne...moyennement...!

    Donc si vous pouviez m'aidez...

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 101
    Par défaut
    Et ne pourrait-t-on pas mettre tout dans un seul fichier PHP ? Avec la requête PHP et une variable javascript dans laquelle on place le résultât de la requête PHP. Et on affiche cette variable avec le set timeout toutes les 5 sec...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var quote = <?php echo $result; ?>;
    Mais je ne sais pas si la requête va s'exécuter chaque 5 secondes, ce que je veux en fait avec la fonction rand() PHP..;

  5. #5
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Vire la déclaration de la fonction fetch_unix_timestamp de la fonction showQuotes pour ne pas le re-déclarer à chaque requête AJAX.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function fetch_unix_timestamp()
    {
    	return parseInt(new Date().getTime().toString().substring(0, 10))
    }
    Citation Envoyé par vbaguet Voir le message
    Et ne pourrait-t-on pas mettre tout dans un seul fichier PHP ? Avec la requête PHP et une variable javascript dans laquelle on place le résultât de la requête PHP. Et on affiche cette variable avec le set timeout toutes les 5 sec...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var quote = <?php echo $result; ?>;
    Mais je ne sais pas si la requête va s'exécuter chaque 5 secondes, ce que je veux en fait avec la fonction rand() PHP..;
    Tu veux dire que la requête AJAX appelle la même page encours?
    Oui c'est possible, tu testes au début de ton code si $_GET["t"] existe, tu faits echo de la valeur à retourner et faire un exit pour ne pas générer la page en entière.

    A+.

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2011
    Messages : 101
    Par défaut
    ok je vais tester ca

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2015, 21h41
  2. Réponses: 5
    Dernier message: 06/05/2012, 19h44
  3. Script php est trop lourd à lancer dans le terminal ?
    Par totoAussi dans le forum Linux
    Réponses: 2
    Dernier message: 26/03/2011, 09h48
  4. Script trop lourd pour flash
    Par arklane dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 03/01/2009, 08h06
  5. Réponses: 11
    Dernier message: 22/03/2005, 01h04

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