Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di Alberto
    Registrato dal
    Oct 2004
    Messaggi
    1,870

    [AJAX] recupero valore di variabile

    Non è per fare polemica con nessuno, ma io avevo chiesto come risolvere il mio problema con AJAX appunto, la guida l'ho letta e la trovo utile, non capivo e non l'ho capito tutt'ora come fare a passare il valore di una variabile all'interno della stessa pagina.

    I miei post, a volte anche fantasiosi chiedevano sempre di risolvere con AJAX.

    Andrea Paiola mi ha offerto una soluzione con AHAH, ma non vuol dire che io non voglia capire AJAX.

    Tutti pronti a criticare, io volevo solo sapere come utilizzare AJAX per il mio scopo, e se qualcuno ha voglia di aiutarmi io ho voglia di capire quindi provo a chiederlo ancora:

    Le prime due giornate del calendario funzionano già con il php vorrei riuscire a capire come poterlo fare con AJAX, non voglio il codice già pronto sia chiaro, ma delle indicazioni.

    Grazie e scusate per il post un po' lungo

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    io sono abbastanza duro a capire, perciò ti chiedo uno sforzo di chiarezza:

    cosa significa non capivo e non l'ho capito tutt'ora come fare a passare il valore di una variabile all'interno della stessa pagina. :master:
    Pietro

  3. #3
    Utente di HTML.it L'avatar di Alberto
    Registrato dal
    Oct 2004
    Messaggi
    1,870
    Hai dato un'occhiata al sito che ho linkato?

    Dalla guida ho capito lo schema per inviare dati in get

    ajax.open("get", "cartella/ajax.html?leggi=Dante", true);
    in questo modo utilizzo il get in modo statico, per far si che la pagina non sia statica, ma dinamica utilizzo la funzione descritta nella guida e in particolare

    ajax.open("get", nomeFile, true);
    Da qui ho 2 domande

    1) come integro la possibilità di passare altri parametri, ad esempio, leggi=Dante in modo dinamico?

    2) se invece di caricare una pagina avessi bisogno di modificare il valore di una variabile all'interno della stessa pagina, in modo che, ad esempio, mi vari l'output di una query

    Con AHAH l'ho fatto, vorrei farlo con AJAX però, che era anche il mio scopo primario

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    sinceramente non so proprio cosa rispondere

    Spero proprio che venga br1 armato di biblica pazienza per allontanare questa nebbia
    Pietro

  5. #5

    .....

    Ciao.
    Esempio pagina HTML:
    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <
    html xmlns="http://www.w3.org/1999/xhtml">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <
    title>Our wonderful AJAX page!</title>
    <
    script language="javascript" type="text/javascript">
    function 
    DOMize(element
    {
    /////
    /// DOMize function by andr3a Utente di HTML.it
    ////
        
    if(!element.addEventListener)
        {
            
    element.addEventListener=function(event,listener)
                                    {
                                        
    event="on"+event;
                                        if(
    this.attachEvent)
                                        {    
                                            
    this.attachEvent(event,listener);
                                        }
                                        else 
                                        {            
                                            
    this[event]=listener;
                                        }
                                     }

        };
        if(!
    element.removeEventListener)
        {
            
    element.removeEventListener=function(event,listener)
                                        {
                                            
    event="on"+event;
                                            if(
    this.detachEvent)    
                                            {
                                                
    this.detachEvent(event,listener);
                                            }
                                            else     
                                            {        
                                                    
    delete this[event];
                                            }
                                        }
        };
        return 
    element;
    };
    function 
    getPage(){

    var 
    xmlhttp=false//Clear our fetching variable
            
    try {
                    
    xmlhttp = new ActiveXObject('Msxml2.XMLHTTP'); //Try the first kind of active x object…
            
    } catch (e) {
                    try {
                            
    xmlhttp = new
                            
    ActiveXObject('Microsoft.XMLHTTP'); //Try the second kind of active x object
                
    } catch (e) {
                    
    xmlhttp false;
                            }
            }
            if (!
    xmlhttp && typeof XMLHttpRequest!='undefined') {
                    
    xmlhttp = new XMLHttpRequest(); //If we were able to get a working active x object, start an XMLHttpRequest
            
    }

            var 
    file 'query.php?page=';
             
    //This is the path to the file we just finished making *
            
    var sel document.getElementsByTagName("select")[0];
            var 
    whatinfo sel.options[sel.selectedIndex].value;
            
    xmlhttp.open('GET'file whatinfotrue); //Open the file through GET, and add the page we want to retrieve as a GET variable **
            
    xmlhttp.onreadystatechange=function() {
            if (
    xmlhttp.readyState==4) { //Check if it is ready to recieve data
                    
    var content xmlhttp.responseText//The content data which has been retrieved ***
                    
    if( content ){ //Make sure there is something in the content variable

                
    if(test document.getElementById("paragraph")) {
                
    document.getElementById("target").removeChild(test);
                }
                    var 
    info document.createElement("p");
                    
    info.setAttribute("id""paragraph");
                    var 
    text document.createTextNode(content);
                    
    info.appendChild(text);
                    
    document.getElementById("target").appendChild(info);
                }
            }
            }
            
    xmlhttp.send(null//Nullify the XMLHttpRequest
    return;
    }
    window.onload = function()
    {
    var 
    sel document.getElementsByTagName("select")[0];
    DOMize(sel).addEventListener("change",getPagefalse); 
    }

    </script>
    </head>
    <body>
    <form method="get">
    <select name="choosepage">
    <option  value="">Choose page</option>
    <option  value="uno">Page One</option>
    <option value="due">Page Two</option>
    </select>
    </form>
    <div id="target"></div>
    </body>
    </html> 
    Pagina PHP:
    Codice PHP:
    <?php 
    //This file is text.php
     
    mysql_connect("localhost"""""); //Connect to the mysql server with your host (most likely localhost), username, and password
    mysql_select_db(""); //Select your database by name
     
    $page $_GET["page"]; //This is the variable we retrieve through GET to know which row of content to retrieve
     
    $sql "SELECT * FROM pages WHERE page = '$page'"//This is the text of the query. We will select the content field from the table ‘pages’ where the page field has the same value as the one we want to retrieve
     
    $query mysql_query($sql) or die(mysql_error()); //Make the actual query
     
    if( mysql_num_rows($query) == //Check to see if we found 1 row with that page name
    {
      
    $r=mysql_fetch_assoc($query); //Set a mysql fetching variable for the query
      
    echo $r["content"]; //Echo out the content of the page we want
    }
    else
    {
      echo 
    "Sorry, that page was not found."//Otherwise, echo out an error message saying the page was not found
    }

    ?>
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  6. #6

    ............

    Ah rieccomi.
    SQL

    Codice PHP:
    CREATE TABLE `pages` (
      `
    pagevarchar(255NOT NULL default '',
      `
    contenttext NOT NULL
    ENGINE=MyISAM DEFAULT CHARSET=latin1;

    -- 
    -- 
    Dumping data for table `pages`
    -- 

    INSERT INTO `pagesVALUES ('uno''AJAX non è l''ennesima architettura per il mondo web; in realtà è l''unione di molte tecnologie Open Source già esistenti. Infatti, AJAX è un termine coniato da Jesse James Garrett nel 2005 e sta per Asynchronous Javascript And XML e raggruppa in una sola parola la tecnica per realizzare applicazioni web più dinamiche, più user-friendly e più facilmente fruibili dall''utente finale.');
    INSERT INTO `pagesVALUES ('due''Oltre a questo, ovviamente, c''è sempre HTML e CSS per disegnare le pagine web e DHTML per rendere dinamico il contenuto delle medesime.\r\nAJAX è un nuovo modo per sviluppare le applicazioni WEB. Alcuni esempi sono già presenti su internet come ad esempio Writely ([url]http://www.writely.com[/url]), Google Maps ([url]http://maps.google.com/[/url]), Google Readers, Gmail ([url]http://mail.google.com/mail/[/url]), Google Suggest ([url]http://www.google.com/webhp?complete=1[/url]), Flickr ([url]http://www.flickr.com/[/url]), e così via.'); 

    Nell'altra discussione (quella di AHAH per intenderci)
    c'è un mio piccolo post con tre links veramente
    utili al fine della comprensione di AJAX.


    Spero che tutta sta roba ti
    possa chiarire le idee




    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  7. #7
    quello che fai col php è restituire una pagina a seconda delle richieste GET del sito

    index.php?pag=htm/_calendario&liv=1&liv2=2&gio=1

    problema numero 1
    te lo chiarirò in pvt ... per ora posso consigliarti di approfondire le problematiche di sicurezza che riguardano il PHP


    problema numero 2
    la pagina _calendario la includi dinamicamente ed al suo interno verifichi i valori liv, liv2 e gio.
    Queste sono le variabili che dovresti utilizzare anche con ajax ma la pagina adibita alla risposta deve farti tornare solo il contenuto centrale della paginae non tutta la pagina altrimenti ti ritrovi il sito innestato su se stesso.

    Tale contenuto dovrà quindi essere solo quello che mostra Giornata N° ed il resto
    <div class="testo3" align="center">Giornata 2</div> ... etc etc ....

    la richiesta asincrona non deve ricevere altro o rischia di diventare inutile.

    Detto questo, per rendere la pagina compatibile con i browsers più o meno vecchi (degradabile per chi non ha javascript) non devi fare niente sulla pagina ma agire direttamente via JS perchè i links sono già completi di variabili da inviare.

    questo significa che puoi fare così (è solo un esempio):
    codice:
    // oggetto XMLHttpRequest
    //	dalla guida con furore,
    // uno dei modi migliori per prendere l'elemento
    // che non usa il fastidioso try catch che da errori
    // su browsers datati a prescindere (tipo IE4 o altri)
    function assegnaXMLHttpRequest() {
    	var	XHR = null,
    		browserUtente = navigator.userAgent.toUpperCase();
    	if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
    		XHR = new XMLHttpRequest();
    	else if(window.ActiveXObject && browserUtente.indexOf("MSIE 4") < 0) {
    		if(browserUtente.indexOf("MSIE 5") < 0)
    			XHR = new ActiveXObject("Msxml2.XMLHTTP");
    		else
    			XHR = new ActiveXObject("Microsoft.XMLHTTP");
    	};
    	return XHR;
    };
    
    
    // funzione a caricamento pagina
    onload = function(){
    
    	// verifico che il browser sia compatibile con 
    	// getElementsByTagName
    	if(document.getElementsByTagName) {
    		
    		// prendo tutti i links della pagina
    		var	links = document.getElementsByTagName("A"),
    			i = links.length;
    
    		// li ciclo tutti
    		while(i--) {
    
    			// verifico che il link sia del calendario
    			// (contiene quindi questo pezzo di stringa)
    			if(links[i].href.indexOf("index.php?pag=htm/_calendario") > 0) {
    
    				// assegno l'evento onclick che dovrà sfruttare ajax
    				links[i].onclick = function(){
    
    
    					var	ajax = assegnaXMLHttpRequest();
    
    					// verifico che la variabile non sia nulla
    					if(ajax != null) {
    
    						// assegno la pagina da caricare
    						ajax.open("get", this.href + "&ajax=true", true);
    						ajax.send(null);
    						ajax.onreadystatechange = function(){
    							// a caricamento finito
    							if(ajax.readyState === 4) {
    								
    								// scrivo il risultato sul div "calendario"
    								document.getElementById("calendario").innerHTML = ajax.responseText;
    							};
    						};
    
    					};				
    
    					// l'evento deve ritornare false per 
    					// evitare che parti il link vero e proprio
    					return false;
    				};
    			};
    		};
    	};
    
    	// richiamo l'altra funzione init che usi
    	init();
    };
    l'ulteriore variabile in GET appesa al link da richiamare è utile per mostrare nella pagina PHP solo la parte centrale invece di mostrare tutta la pagina.

    Ad esempio avrai

    if(isset($_GET["ajax"]) && $_GET["ajax"] === "true") {
    // mostri solo il contenuto e non tutto il sito
    }



    Tutto questo l'ho scritto senza avere la benchè minima idea di come sia strutturato il tuo sito, quindi spero funzioni o che tu riesca a riadattarlo , sempre che tu abbia capito.
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

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.