[Terminé] Script Javascript
Bonjour à tous,

Voilà un script ( Javascript Oo ) qui me pose quelques problèmes :
Code :
<div id="icon_stat2">
<?php include('add_stat.php'); ?>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{

function file(fichier)
{
if(window.XMLHttpRequest) // FIREFOX
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // IE
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else
return(false);
xhr_object.open("GET", fichier, false);
xhr_object.send(null);
if(xhr_object.readyState == 4) return(xhr_object.responseText);
else return(false);
}

function w12()
{
texte = file('http://gmfactory.fr/php/add_stat.php );
document.getElementById( icon_stat2 ).innerHTML = texte;
}

function loadLog2()
{
w12();
}

setInterval (loadLog2, 2500); //Reload file every 2.5 seconds

});
</script>
</div>

Je préfère prévenir, je ne suis pas développeur javascript, c'est mon webmaster qui l'a fait, et là, il sèche...
Le but du script ? Actualiser un div pour afficher le nombre de joueurs connectés.
( Je fais pas de pub avec les liens, hein, c'est juste que y a des includes et que j'avais la flemme de mettre la page php ici )
Donc je disais... actualiser un div... ça, ca fonctionne ! Mais le problème c'est que quand je veux entrer du texte dans n'importe quel champ de texte sur la page ( Genre login/mdp/tchat/news/etc... ) et bien... ca saute des caractères lors de l'actualisation, et ca, c'est chiant, surtout quand ca s'actualise toutes les 2,5 secs !

Je fait donc appel au dev Javascript qui passerait par là pour m'aider sur ce petit soucis Clin

Cordialement,
MacWarrior.
P.S : Encore une fois, les liens n'ont pas pour but de faire de la pub !
Alors premièrement ton webmaster te fait un mix JQuery + XMLhttpRequest... où est l'intérêt d'utiliser jQuery si il n'utilise pas l'API $.Ajax incluse dans jQuery.

Deuxièmement, tu nous dis que le but est d'afficher le nombre de joueurs en ligne (facile) et de rafraîchir ce nombre à intervalle régulier (2.5/3 sec)
le souci est que cela va pomper pas mal de ressources si un connard lance avec un outil une série d'ouverture de 10 000 pages sur une grosse machine et qu'il laisse ca ouvert... (10 000 requetes toutes les 3 secondes) c'est pas malin malin.

Sinon voici quelques conseils :

Utilise un parseur de template c'est + propre.
Tes balises <script> sont à inclure dans le <head> au maximum.

Voici un exemple de script qui peux facilement marcher.
Nota : fais juste un include du fichier JS dans le head, après ton include à jQuery

Code PHP :
/* Script pour rafraîchir le div des joueurs en ligne
 * Auteur : Elmsroth 
 * Date   : 03/06/2011
 */

// Configuration  :
var divID_Torefresh "icon_stat2";                         // ID du div dont el contenu sera rafraîchi.
var URL_SCRIPT "http://gmfactory.fr/php/add_stat.php"// URL du script PHP appelé qui donnera le contenu à mettre dans le <div> à Rafraichir.
var RereshDelay 2500;                                     // Délai en Millisecondes

// Fonction qui effectue la requête Ajax
function DoRefresh()
{
     $.
ajax({
               
type"GET",
               
asynctrue,
               
urlURL_SCRIPT,
               
success: function(response) {
                    $(
"#"+divID_Torefresh).html(response);
                }
            });
}

$(
document).ready(function()
{
    
setTimeout("Dorefresh()",RefreshDelay);
}); 


Nota : j'ai mis la balise BBCode PHP pour mieux vori la coloration syntaxique du javascipt.. Clin
Merci Elmsroth,
mais j'ai un soucis avec ton code et pas des moindres, je ne réussi pas a le faire fonctionner.
Voici le script : test.js
Code :
        /* Script pour rafraîchir le div des joueurs en ligne
         * Auteur : Elmsroth
         * Date   : 03/06/2011
         */

        // Configuration  :
        var divID_Torefresh = "stat_contenu"; // ID du div dont le contenu sera rafraîchi.
        var URL_SCRIPT = "http://gmfactory.fr/php/stat_sql.php";  // URL du script PHP appelé qui donnera le contenu à mettre dans le <div> à Rafraichir.
        var RereshDelay = 2500;               // Délai en Millisecondes

        // Fonction qui effectue la requête Ajax
        function DoRefresh()
        {
             $.ajax({
                       type: "GET",
                       async: true,
                       url: URL_SCRIPT,
                       success: function(response) {
                            $("#"+divID_Torefresh).html(response);
                        }
                    });
        }

        $(document).ready(function()
        {
            setTimeout("DoRefresh()",RefreshDelay);
        });

Voici la page
Code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>Page de test</title>

    <script type="text/javascript" src="js/jquery.min.js"></script>
    <script type="text/javascript" src="js/test.js"></script>

</head>
<body>
    <div id="stat_contenu">
        <?php include('php/stat_sql.php'); ?>
    </div>
</body>
</html>

Aurais tu une idée de mon erreur ?
Je te PM ajoute moi sur skype
Édition :
Correction:

Code PHP :
/* Script pour rafraîchir le div des joueurs en ligne
 * Auteur : Elmsroth 
 * Date   : 03/06/2011
 */

// Configuration  :
var divID_Torefresh "icon_stat2";                         // ID du div dont el contenu sera rafraîchi.
var URL_SCRIPT "http://gmfactory.fr/php/add_stat.php"// URL du script PHP appelé qui donnera le contenu à mettre dans le <div> à Rafraichir.
var RefreshDelay 2500;                                     // Délai en Millisecondes

// Fonction qui effectue la requête Ajax
function DoRefresh()
{
     $.
ajax({
               
type"GET",
               
asynctrue,
               
urlURL_SCRIPT,
               
success: function(response) {
                    $(
"#"+divID_Torefresh).html(response);
                }
            });
}

$(
document).ready(function()
{
    var 
UnicTimerID setInterval("DoRefresh()",RefreshDelay);
}) 
y'a $.get qui est très bien, voire $.fn.load.


J'ajoute que le 1er argument de setInterval doit être une fonction, pas un string, sinon ça eval(), ce qui est le mal.

Retourner en haut Accueil