Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Riutilizzo oggetti

  1. #1

    Riutilizzo oggetti

    Ciao ragazzi,
    Sto sviluppando con javascript un oggetto che mi faccia richieste ajax. Mi sono buttato sugli oggetti perchè mi hanno insegnato che la programmazione ad oggetti è sempre cosa buona! Ok, ho fatto tutto bene e funziona tutto a meraviglia! Dopo tanta felicità però, arriva la delusione! Non riesco a fare richieste multiple con lo stesso oggetto. Dopo la prima richiesta cioè, l'oggetto sembra morto. Anche se tento di fare un oggetto=null e poi una nuova new, non funziona e non mi da nessun errore. Quasi che gli oggetti sono usa e getta!! Avete un idea di come potrei fare??? Ho già studiato le varie prototype, dojo, e amici ma nulla!
    Ho provato a cercare se esiste un method per resettare l'oggetto xmlhttprequest ma il nulla si è aperto sotto di me!
    In una reference ho trovato il metodo abort, ma non funziona su un sacco di browser e su quelli dove sembra funzionare in realtà non fa niente...
    Se mi potete illuminare con quelche idea, ve ne sarei grato nei secoli di javascript programming!!

    MrBinding

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    senza vedere il codice javascript è difficile capire dov'è il problema... potresti postarlo?
    Vuoi aiutare la riforestazione responsabile?

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

  3. #3
    Utente bannato
    Registrato dal
    Mar 2006
    Messaggi
    1
    ecco il codice...mi servirebbe implementare una funzione che
    resetta XMLHttpRequest in modo da poterlo riutilizzare


    function FmakeRequest(nome){
    var http_request =false;//mi serve alla fine per controllare la variabile è stata inizializzata
    var funzCallBack=new Array();
    var readyState=0;
    if(!ctrlParamSingle(nome, "string")) return(false);
    this.nome=nome;
    this.doRequest=function(method, pageURL, parametri){
    try{if(!ctrlParamList(method, "string", pageURL, "string", parametri, "string")) return null;
    if(window.XMLHttpRequest){
    //per i browser diversi da IE
    http_request=new XMLHttpRequest();
    if(http_request.overrideMimeType) http_request.overrideMimeType('text/xml');
    }else if(window.ActiveXObject){
    try{
    http_request=new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
    try{
    //per IE
    http_request=new ActiveXObject("Microsoft.XMLHTTP");
    }catch(e){}
    }
    }
    if(!http_request) return null;
    http_request.onreadystatechange=function(){
    if(funzCallBack[readyState]) eval(funzCallBack[readyState]); readyState++;
    }
    http_request.open(method, pageURL, true);
    //se utilizzo il metodo GET mando null
    if ( (method == "GET") || (method == "get") ){
    http_request.send(null);
    }if ( (method == "POST") || (method == "post") ) {
    http_request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    http_request.send(parametri);
    }
    }catch(e){
    return false; }
    return true;
    //controllo che l'oggetto XMLHttpRequest sia stato creato
    if(!http_request) alert("Errore: Tentativo di inizializzare l'oggetto XMLHttpRequest fallito");
    }

    this.onReadyStateChange=function(readyState, funz){
    try{ if(!ctrlParamList(readyState, "number", funz, "string")) return null;
    if(readyState<0 || readyState>4) return null;
    funzCallBack[readyState]=funz;
    }catch(e){ return false; }
    return true;
    }
    this.getAllResponseHeaders=function(){return(http_ request.getAllResponseHeaders());}
    this.getResponseHeader=function(headerName){
    try{if(!ctrlParamSingle(headerName, "string")) return(null);
    else return(http_request.getResponseHeader);
    }catch(e){ return false; }
    return null;
    }
    this.getReadyState=function(){return(http_request. readyState);}
    this.getStatus=function(){return(http_request.stat us);}
    this.getStatusText=function(){return(http_request. statusText);}
    this.getXMLresponse=function(){return(http_request .responseXML);}
    this.getTXTresponse=function(){return(http_request .responseText);}
    this.toString=function(){return(this.nome);}
    this.unset=function(){return http_request=null;}
    this.abort=function(){return (http_request.abort());}
    // this.onload=function(funzione){ http_request.onload=funzione;
    }

  4. #4
    Ciao!
    Oggi, armati di Santissima Pazienza io e il collega Killanaca ci siam messi a debuggare un po' tutta l'applicazione che usa ajax.
    Killanaca ha tirato fuori dal cappello un plug-in per eclipse che poggia su tomcat che a sua volta chiama ovviamente apache! Nulla abbiamo trovato di erroneo.
    Poi, il giovanissimo ma utilissimo FireBug per mozilla ci ha aperto gli occhi.
    Noi inizializziamo l'oggetto. Assegnamo le funzioni ai readyState. Scateniamo la richiesta...
    Riproviamo e nulla.
    In realtà la richiesta viene eseguita e la pagina target ovviamente risponde e anche bene ... La mancanza risiede nella gestione degli states. Questo evento (onReadyStatesChanges dell'oggetto xmlhttprequest) una volta scatenato muore e si porta dietro nella tomba anche la funzione che gli si assegna. Ogni qualvolta vogliamo quindi fare una richiesta ajax, già perventivamente usata, dobbiamo RIASSEGNARE le funzioni dei reayStateChange.
    Questo è quanto. Speriamo possa esser utile ad altri e che due giornate di lavoro non vadan più perse dietro una gestione eventi a mio modestissimo parere alquanto anomala...
    Grazie. A presto

    MrBinding e Killanaca

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.