Visualizzazione dei risultati da 1 a 3 su 3

Discussione: readystate

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    9

    readystate

    Ciao a tutti! Mi sto avvicinando al mondo AJAX vista la mia necessità di costruire una chat.
    Ho trovato in internet alcuni esempi ed ho modificato uno che originariamente scriveva la lista dei messaggi in un file html. La mia modifica consiste nel scrivere i messaggi in una tabella mssql.
    questo è il codice della pagina principale:

    <?php
    session_start();

    include("../../_inc/funzphp.inc");

    // include il file della lingua
    if (empty($_COOKIE["Lingua"])) {
    $_COOKIE["Lingua"] = "it";
    }
    $Lingua = Trim($_COOKIE["Lingua"]);
    if (empty($Lingua)) {
    $_COOKIE["Lingua"] = "it";
    $Lingua="it";
    }
    include_once "Lang/index." . $Lingua . ".php";

    if (isset($_GET["u"])){
    unset($_SESSION["agr_nickname"]);
    }

    // Process login info
    if (isset($_POST["submitBtn"])){
    $name = isset($_POST["name"]) ? $_POST["name"] : "Unnamed";
    $_SESSION["agr_nickname"] = $name;
    }
    $nickname = isset($_SESSION["agr_nickname"]) ? $_SESSION["agr_nickname"] : "Hidden";
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <title>Chat by Agrelma</title>
    <link href="style/style.css" rel="stylesheet" type="text/css" />
    <script language="javascript" type="text/javascript">
    <!--
    var httpObject = null;
    var link = "";
    var timerID = 0;
    var nickName = "<?php echo $nickname; ?>";

    // Get the HTTP Object
    function getHTTPObject(){
    if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
    else if (window.XMLHttpRequest) return new XMLHttpRequest();
    else {
    alert("Your browser does not support AJAX.");
    return null;
    }
    }

    // Change the value of the outputText field
    function setOutput(){
    if(httpObject.readyState == 4){
    var response = httpObject.responseText;
    var objDiv = document.getElementById("result");
    objDiv.innerHTML += response;
    objDiv.scrollTop = objDiv.scrollHeight;
    var inpObj = document.getElementById("msg");
    inpObj.value = "";
    inpObj.focus();
    }
    }

    // Change the value of the outputText field
    function setAll(){
    if(httpObject.readyState == 4){
    var response = httpObject.responseText;
    var objDiv = document.getElementById("result");
    objDiv.innerHTML = response;
    objDiv.scrollTop = objDiv.scrollHeight;
    }
    }

    // Implement business logic
    function doWork(){
    httpObject = getHTTPObject();
    if (httpObject != null) {
    link = "message.php?nick="+nickName+"&msg="+document.getE lementById('msg').value;
    httpObject.open("GET", link , true);
    httpObject.onreadystatechange = setOutput;
    httpObject.send(null);
    }
    }

    // Implement business logic
    function doReload(){
    httpObject = getHTTPObject();
    var randomnumber=Math.floor(Math.random()*10000);
    if (httpObject != null) {
    link = "message.php?all=1&rnd="+randomnumber;
    httpObject.open("GET", link , true);
    httpObject.onreadystatechange = setAll;
    httpObject.send(null);
    }
    }

    function UpdateTimer() {
    doReload();
    timerID = setTimeout("UpdateTimer()", 5000);
    }

    function keypressed(e){
    if(e.keyCode=='13'){
    doWork();
    }
    }
    //-->
    </script>
    </head>
    <body onload="UpdateTimer();">
    <div id="main">
    <div id="caption">Chat by Agrelma</div>
    <?php
    // preleva i dati passati
    $Nuovo = "";
    if (!empty($_GET["Nuovo"])) { $Nuovo = $_GET["Nuovo"]; }

    // controllo se è il primo accesso
    if ($Nuovo = "SI") {
    $_SESSION["agr_ChatCod"] = CreaCodice("C");
    $_SESSION["agr_ChatIDDest"] = $_GET["IDDest"];
    $_SESSION["agr_ChatIDMitt"] = "0";
    $_SESSION["agr_ChatDest"] = $_GET["NomeDest"];
    $_SESSION["agr_nickname"] = $Ph1;
    } else {
    /* $name = isset($_POST["name"]) ? $_POST["name"] : "Unnamed";
    $_SESSION["agr_nickname"] = $name;*/
    }
    ?>
    <div id="result">
    </div>
    <div id="sender" onkeyup="keypressed(event);">
    <?php echo $Ph2?> <input type="text" name="msg" size="30" id="msg" />
    <button onclick="doWork();"><?php echo $Ph3?></button>
    </div>
    </div>
    </body>

    ... e questo è il codice del file message.php:

    <?php
    session_start();

    // include i dati del db e si collega
    include("../../_inc/dbphp.inc");
    $Conn = mssql_connect($DB_database,$DB_username,$DB_passwo rd) or die("ERROR: database error.");
    mssql_select_db("agrelma") or die("ERROR: database requested not exists");
    if (isset($_GET['msg'])) { // scrittura messaggio nel db
    $msg = str_replace(Chr(34), "", str_replace("'", "", $_GET['msg']));
    $line = "

    <span class=\"name\">[" . date("G:i") . "] " . $_SESSION["agr_nickname"] . ": </span><span class=\"txt\">$msg</span></p>";
    $mySQL = "INSERT INTO ChatMessaggi (Codice, DataOra, Messaggio, Letto, NomeDest, IDDest, ChiScrive) VALUES ('" . $_SESSION["agr_ChatCod"] . "', '00000000000000',
    '" . $line . "', 0, '" . $_SESSION["agr_ChatDest"] . "', " . $_SESSION["agr_ChatIDDest"] . ", " . $_SESSION["agr_ChatIDMitt"] . ")";
    mssql_query($mySQL);
    echo $line;
    } else if (isset($_GET['all'])) { // lettura dei messaggi dal db
    $mySQL = "SELECT Messaggio FROM ChatMessaggi WHERE Codice='" . $_SESSION["agr_ChatCod"] . "' ORDER BY DataOra";
    $myRs = mssql_query($mySQL);
    $content = "";
    while($myRecs = mssql_fetch_array($myRs)) {
    $content .= $myRecs["Messaggio"];
    }
    mssql_free_result($myRs);
    $mySQL = "UPDATE ChatMessaggi SET Letto=1 WHERE Codice='" . $_SESSION["agr_ChatCod"] . "' AND Letto=0";
    mssql_query($mySQL);
    echo $content;
    }

    // chiude il db
    mssql_close($Conn);
    ?>

    Non riesco a capire come mai readystate nella funzione SetAll() assume il valore "4" dopo la chiamata a message.php e invece readystate nella funzione SetOption() non assume mai il valore "4" dopo la chiamata a message.php.
    AIUTO!!..

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Parlo per esperienza è tutto incasinato, codice php (che non tutti conoscono) assieme al javascript, rende la pagina indecifrabile.
    Se vuoi sperare in aiuti posta solo la pagina html (quella che riceve il browser) oppure posta un link alla pagina pubblica (meglio)
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    9
    Hai ragione. Chiedo venia... Non appena ho il codice sotto mano lo posto... Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.