Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [Ajax] XMLHttpRequest e variabili globali.

    Ciao.
    Questo è lo snippet:
    Codice PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <
    html>
    <
    head>
    <
    title>Untitled Document</title>
    <
    meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <
    script language="JavaScript" type="text/JavaScript">
    var 
    req null;
    function 
    processReqChange() {
        if (
    req.readyState == && req.status == 200 ) {
            
    xml=  req.responseXML.documentElement;
            
    /* Dichiaro links global */
            
    links= new Array();
            var 
    itemxml.getElementsByTagName('item');
            for(var 
    i=0;i<item.length;i++){
                
    links[i]= new Array();
                for(var 
    y=0;y<item[i].childNodes.length;y++){
                    if(
    item[i].childNodes[y].tagName=='id' || item[i].childNodes[y].tagName=='title'){
                        
    links[i].push(item[i].childNodes[y].firstChild.data);
                    }
                }
            }
          }
    //alert(links);
    }
    function 
    loadUrlurl ) {
      if(
    window.XMLHttpRequest) {
        try { 
    req = new XMLHttpRequest();
        } catch(
    e) { req false; }
      } else if(
    window.ActiveXObject) {
        try { 
    req = new ActiveXObject('Msxml2.XMLHTTP');
        } catch(
    e) {
        try { 
    req = new ActiveXObject('Microsoft.XMLHTTP');
        } catch(
    e) { req false; }
      } }
      if(
    req) {
        
    req.onreadystatechange processReqChange;
        
    req.open('GET'urltrue);
        
    req.send('');
      }
    }
    function 
    test()
    {
    alert(links);
    }
    loadUrl('xml/items.xml');
    window.onload=function(){
    test();
    }
    </script>
    </head>

    <body>
    <body>

    </body>
    </html> 
    Praticamente faccio caricare un file xml
    per recuperare i valori dei tag id e title
    e metto tutti i valori in un array che dichiaro
    globale all'interno di processReqChange e fino
    qui no problem.
    Dopo aver costruito l'array lo vorrei utilizzare
    per implementare un sistema di paging per
    permettere all'utente una veloce scorsa di tutti
    i titoli presenti nel sito.
    Il problema è che l'array links non è
    visibile all'interno di test come mi aspetterei.
    Altra cosa che non riesco a capire e che su Opera
    funzionicchia su FF manco pu c......
    Ho l'impressione di fare un errore di fondo
    ma non riesco a venirne fuori mi date una
    mano

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

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    links e' una parola riservata e rappresenta la collezione di tutti i links presenti nella pagina... usa un altro nome di variabile.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3

    .........

    Ti ringrazio dell'appunto
    (di tutte le parole che ci sono dovevo proprio
    sceglierne una riservata !)
    ma PP it doesn't work yet.

    Seguendo il tuo appunto
    ho messo al posto di links t
    ma rpp non funzia e non capisco
    che caspita c'è che non va
    <script language="JavaScript" type="text/JavaScript">
    var req = null;
    function processReqChange() {
    if (req.readyState == 4 && req.status == 200 ) {
    xml= req.responseXML.documentElement;
    /* Dichiaro t global */
    t= new Array();
    var item= xml.getElementsByTagName('item');
    for(var i=0;i<item.length;i++){
    t[i]= new Array();
    for(var y=0;y<item[i].childNodes.length;y++){
    if(item[i].childNodes[y].tagName=='id' || item[i].childNodes[y].tagName=='title'){
    t[i].push(item[i].childNodes[y].firstChild.data);
    }
    }
    }
    }
    /* OK */
    alert(t);
    }
    function loadUrl( url ) {
    if(window.XMLHttpRequest) {
    try { req = new XMLHttpRequest();
    } catch(e) { req = false; }
    } else if(window.ActiveXObject) {
    try { req = new ActiveXObject('Msxml2.XMLHTTP');
    } catch(e) {
    try { req = new ActiveXObject('Microsoft.XMLHTTP');
    } catch(e) { req = false; }
    } }
    if(req) {
    req.onreadystatechange = processReqChange;
    req.open('GET', url, true);
    req.send('');
    }
    }

    function test()
    {
    /* Error t is not defined */
    alert(t);
    }
    loadUrl('admin/xml/items.xml');
    window.onload=function(){
    test();
    }
    </script>
    </head>

    <body>
    <body>

    </body>
    </html>

    Ti posto il file xml così
    se ne hai voglia puoi fare delle
    prove.


    <?xml version="1.0" encoding="utf-8"?>
    <items>
    <item>
    <id>1</id>
    <title>Title uno</title>
    <author>Whisher</author>
    <description>Description</description>
    <pubDate>1173625536</pubDate>
    </item>
    </items>

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

  4. #4

    .........

    Ecco l'errore di fondo secondo
    la mia opinione.
    Data la natura asincrona della
    XMLHttpRequest l'array quando
    viene caricata la pagina non sempre
    è disponibile (può esserlo o no) da qui
    l'errore.
    Che ne pensate ?




    Sto ripiegando a meno di interventi
    risolutivi in una classetta JsBuilder
    che mi scrive l'array in un file js
    da allegare alla index (per adesso
    mi sembra il modo migliore )
    Che ne pensate ?



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

  5. #5
    req.open('GET', url, false);
    Questa però mi sembra la soluzione.
    Definire la request non asincrona e magare
    mettere la richieste in on load.

    Che ne pensate ?


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

  6. #6
    Alla fine pista che ti ripista
    sono riuscito a farlo funzionare
    qui potete vedere il masterpiece
    L'effetto è senza dubbio da migliorare


    Se mi ci fate un giretto ...........

    Ah si può configurare per il numero di
    articoli che vuoi vedere


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

  7. #7
    Interesting
    Bè se qc vuole dare un suo parere su Synchronous Requests == BAD è invitato


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

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.