Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Analizzare funzione

  1. #1

    Analizzare funzione

    Ciao a tutti.
    Avrei bisogno del vostro aiuto per capire il funzionamento di questa funzione che ho trovato in uso su un sito web, e che non riesco a decifrare:

    codice:
    var obj;
    function addFav(itm, id)
    {
            obj = false;
            if(navigator.userAgent.indexOf('Opera') != -1 ||
    	navigator.userAgent.indexOf('Konqueror') != -1)
            {
                    return true;
            }
            if(window.XMLHttpRequest)
            {
                    try
                    {
                            obj = new XMLHttpRequest();
                    }
                    catch(e)
                    {
                            obj = false;
                    }
            }
            else if(window.ActiveXObject)
            {
                    try
                    {
                            obj = new ActiveXObject("Msxml2.XMLHTTP");
                    }
                    catch(e)
                    {
                            try
                            {
                                    obj = new ActiveXObject("Microsoft.XMLHTTP");
                            }
                            catch(e)
                            {
                                    return true;
                            }
                    }
            }
            if(obj)
            {
                    var prevNum = itm.innerHTML.match(/\((.+)\)/);
                    var prevStr = itm.innerHTML;
                    itm.innerHTML = 'Please wait...';
                    obj.onreadystatechange = function() { getChange(itm, prevNum, prevStr); };
                    obj.open("GET", 'favlive.php?id=' + id, true);
                    obj.send(0);
                    
                    return false;
            }
            else
            {
                    return true;
            }
    }
    
    function getChange(itm, prevNum, prevStr)
    {
            if (obj.readyState == 4)
            {
                    if (obj.status == 200)
                    {
                            if(obj.responseText.indexOf('true') != -1)
                            {
                                    alert('Thanks, your vote has been registered!');
                                    itm.innerHTML = 'Favourites (' + (parseInt(prevNum[1]) + 1) + ')';
                            }
                            else
                            {
                                    alert('You\'ve already voted for this item!');
                                    itm.innerHTML = prevStr;
                            }
                    }
                    else
                    {
                            itm.innerHTML = prevStr;
                    }
            }
    }
    qualcuno sa aiutarmi?
    si tratta per caso di ajax? se si come funziona?
    la funzione viene sfruttata in questo sito:
    http://thesis.veracon.net/
    per incrementare dei voti.
    Mi aiutate?

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    si si,
    si tratta proprio di ajax.

    La prima funzione crea l'oggetto xmlhttprequest

    la seconda funzione viene invocata dalla prima dove c'e' onreadystatechange. Se la chiamata ha avuo successo

    if (obj.status == 200)

    allora si controlla che il testo restituito dalla chiamata contenga "true"

    obj.responseText

    e poi scrive il risultato con innerHTML da qualche parte (probabilmente dentro un div)
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    ok, intanto grazie.
    Se hai voglia di essere più preciso fai pure.
    Dove posso trovare info per capire come fare determinate chiamate, gestire i dati passati e capire in modo più approfondito il percorso che fanno i dati?

    ad esempio
    xmlhttprequest cos'è qualcosa tipo il mysql_query?

    se si, come finziona?

    iniziamo dal principio
    cerca il browser e nel caso trova opera o konqueror ritorna true // che significa? che blocca l'azione e la funzione non parte? anche perchè questa è la prima funzione chiamata!

    questo pezzo letteralmente sarebbe:
    codice:
    if(window.XMLHttpRequest)
            {
                    try
                    {
                            obj = new XMLHttpRequest();
                    }
                    catch(e)
                    {
                            obj = false;
                    }
            }
    se {esiste / funziona XMLhttpRequest}
    prova{
    assegna a obj un nuovo XMLHttpRequest()//? quindi cosa assegna?
    }
    cacth(e){obj = false;} //qui non capisco; è una funzione? di che tipo? assegna false in che situazione?

    try - cacth è simile a if else come funzionamento?

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.