Visualizzazione dei risultati da 1 a 2 su 2

Discussione: [AJAX] - come iniziare

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125

    [AJAX] - come iniziare

    ciao a tutti. Finalmente volevo dedicarmi ad ajax ma le mie scarse conoscenze nel mondo del codice mi portano ad avere qualche difficolta'.
    Quello che vorrei gestire è l'interazione tra js e php.
    In pratica nel mio caso ho una funzione php che crea oggetti php...vedetela come array di array , un esempio potrebbe essere l'oggetto $network= new Network(); ha tanti $connection = new Connection(); , ogni $connection ha tante $session= new Session();

    il fatto e' che in base agli attributi di questo oggettone php devo gestire tramite javascript alcune componenti grafiche come input, img ecc ecc....

    fin'ora ho gestito il tutto in una maniera orribile...me ne rendo conto, ma purtroppo devo far andare le cose, e da solo ho ottenuto risultati solo in questo modo. Mi piacerebbe discutere approfonditamente di queste cose con i piu esperti di voi(magari anche un po pazienti).

    In pratica ho ricreato la stessa gerarchia di classi in javascript, con gli stessi attributi e metodi.

    A questo punto per valorizzare con le giuste informazioni l'oggettone javascript chiamavo una funzione php e dentro il codice di questa tramite echo scrivevo codice javscript creando assieme l'oggetto js in questo modo...

    Codice PHP:

    public function getTrueNetwork($user,$socket){
            
    $net = new Network();
            
    $newMultiSess = new Collection();
            
    $connections $this->emuConnList($user,$socket);
            
    $totaleSessioni 0;
            echo
    '<script language = "javascript" type="text/javascript" src="../web/session.js"></script>'.
            
    '<script language="javascript">'.    
                 
    'if(parent.network){'.
                    
    'network     = parent.network;'.
                    
    'network.clean();'.
                
    '}else{'.
                    
    'network=new Network();'.
                
    '}'.
                 
    '</script>';    
            for(
    $i=0;$i<$connections->size();$i++){
                
    $conn $connections->elementAt($i);
                
    $id_conn $conn->getId();
                
    $type     $conn->getType();
                
    $name      $conn->getName();
                
    $native  $conn->getNative();
                
    $ip_address=$conn->getIp();
                
    $n_port1 $conn->getNamePortById(1);
                
    $n_port2 $conn->getNamePortById(2);
                
    $n_port3 $conn->getNamePortById(3);
                
    $n_port4 $conn->getNamePortById(4);    
                
    $sessions$this->emuSessList($id_conn,$user,$socket);
                
    $conn->setSessions($sessions);    
                
    $totSession $conn->countSess();
                echo 
    '<script language="javascript">'.
                    
    'id_conn="'$id_conn.'";'.
                    
    'type="'$type.'";'.
                    
    'name="'$name.'";'.
                    
    'natives="'$native.'";'.
                    
    'ip_address="'$ip_address.'";'.
                    
    'if(type=="B"){'.
                        
    'n1="'$n_port1.'";'.
                        
    'n2="'$n_port2.'";'.
                        
    'n3="'$n_port3.'";'.
                        
    'n4="'$n_port4.'";'.
                        
    'network.setNamePortById(1,n1);'.
                        
    'network.setNamePortById(2,n2);'.
                        
    'network.setNamePortById(3,n3);'.
                        
    'network.setNamePortById(4,n4);'.    
                        
                    
    '}'.
                    
    'network.addConnection(id_conn,type,name,natives,ip_address);'.
                    
    'conn = network.getConnById(id_conn);'.
                
    '</script>';
                for(
    $j=0;$j<$sessions->size();$j++)
                {
                    
    $c_sess     $sessions->elementAt($j);
                    
    $stat         $c_sess->getStatus();
                    
    $currentName$c_sess->getName();
                    
    $id_port    $c_sess->getPort();
                    
    $id_sess     $c_sess->getId();
                    
    $type         $c_sess->getType();
                    
    $ID_IMG_SESS"ID_".$id_conn."_".$id_port."_".$id_sess;
                    
    //if($type!="P"){
                        
                    
    echo '<script language="javascript">';
                    echo 
    'conn.addSession("'.$id_conn.'","'.$id_sess.'","'.$stat.'","'.$currentName.'","'.$ID_IMG_SESS.'","'.$id_port.'","'.$type.'");';
                    echo 
    '</script>';
                        
    $totaleSessioni++;
                    
    //}
                    
    $newMultiSess->addElement($c_sess);    
                    
                }
            }


            
    $net->setConnections($connections);
            
    $_SESSION['newMultiSess'] = $newMultiSess;
            
    //echo '<script language="javascript">';
            //echo'var t = new Date();';
            
            //    echo 'document.write(network.size()+" management- "+t.getMinutes()+"."+t.getSeconds()+"."+t.getMilliseconds()+"
    ");';
            //    echo '</script>';
            return 
    $net;
        } 
    mi hanno detto che potevo gestire questa cosa con ajax e ci sto provando...ma sono fermo agli inizi.
    Io devo valorizzare il mio oggetto network javscript creato a specchio con l'oggetto php.

    Quindi....parlando di ajax non capisco se devo per forza fare una richiesta (immagino di si ma non so come) per poi analizzare il response del web server.

    Senza usare la mia funzione orribile. Ne ho un'altra solo di php che mi crea l'oggettone php e basta.

    in ajax ho fatto
    function assegnaXMLHttpRequest() {
    // lista delle variabili locali
    var
    // variabile di ritorno, nulla di default
    XHR = null,

    // informazioni sul nome del browser
    browserUtente = navigator.userAgent.toUpperCase();

    // browser standard con supporto nativo
    // non importa il tipo di browser
    if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
    XHR = new XMLHttpRequest();
    // browser Internet Explorer
    // è necessario filtrare la versione 4
    else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0)
    {
    // la versione 6 di IE ha un nome differente
    // per il tipo di oggetto ActiveX
    if(browserUtente.indexOf("MSIE 5") < 0)
    XHR = new ActiveXObject("Msxml2.XMLHTTP");
    // le versioni 5 e 5.5 invece sfruttano lo stesso nome
    else
    XHR = new ActiveXObject("Microsoft.XMLHTTP");
    }

    return XHR;
    }

    window.onload = function() {
    var ajax = assegnaXMLHttpRequest();
    if(ajax) {
    // applicativo AJAX

    ajax.open("get", "loadTree.php", true);
    ajax.send(null);
    alert(ajax.status)
    alert(ajax.getAllResponseHeaders());
    }


    ma status e' sempre a 1....perche? e poi se io voglio fare quello citato sopra....cosa devo chiedere con il send?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    se nessuno mi sa aiutare in questa direzione...l'alternativa e' usare la mia funzione...solo che essendo un iframe a chiedere l'oggetto js formattato adeguatamente...ho necessita di caricare l'iframe DOPO l'iframe che chiama la funzione da me costruita. A volte l'iframe che usa l'oggettone js network viene caricato prima e quindi mi risulta vuoto...
    Come posso ovviare a cio'? se potessi stabilire un ordine rigido di caricamento di iframe allora magari funzionerebbe tutto...ma non so come

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 © 2025 vBulletin Solutions, Inc. All rights reserved.