Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Problema setTimeout

  1. #1

    Problema setTimeout

    Ciao a tutti io ho questo codice ajax:
    var ajax = assegnaXMLHttpRequest();


    function PreparaDati(){
    stringa = "";
    var form = document.forms[0];
    var numeroElementi = form.elements.length;

    for(var i = 0; i < numeroElementi; i++){
    if(i < numeroElementi-1){
    stringa += form.elements[i].name+"="+encodeURIComponent(form.elements[i].value)+"&";
    }else{
    stringa += form.elements[i].name+"="+encodeURIComponent(form.elements[i].value);
    }
    }
    }


    function loader(elemento){
    elemento.style.display = 'block';
    elemento.style.visibility = 'visible';
    elemento.innerHTML = '[img]ajax-loader.gif[/img]';
    }

    function InviaDati(url, method) {
    PreparaDati();
    caricaContent(url, method, stringa);
    }

    function handleResponse(method, elemento) {
    // verifica dello stato
    if(ajax.readyState === readyState.COMPLETATO) {
    // verifica della risposta da parte del server
    if(statusText[ajax.status] === "OK"){
    // operazione avvenuta con successo
    //verifica del tipo di richiesta
    switch (method.toLowerCase()){
    case "get" :
    elemento.innerHTML = ajax.responseText;
    break;
    case "post" :
    elemento.innerHTML = "Dati inseriti correttamente!";
    break;
    }
    }else {
    // errore di caricamento
    elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.
    ";
    elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
    }
    }
    }

    function exeFunc(method, url, elemento){
    ajax.open(method, url, true);
    if (method.toLowerCase() == "post"){
    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
    }
    // rimozione dell'header "connection" come "keep alive"
    ajax.setRequestHeader("connection", "close");

    // impostazione controllo e stato della richiesta
    ajax.onreadystatechange = function resp(){handleResponse(method, elemento)};

    switch (method.toLowerCase()){
    case "get" :
    ajax.send(null);
    break;
    case "post" :
    ajax.send(stringa);
    break;
    }
    }


    function caricaContent(url, method) {

    // variabili di funzione
    var
    // assegnazione elemento del documento
    elemento = prendiElementoDaId("contenuto-dinamico"),
    // risultato booleano di funzione
    usaLink = true;

    // se l'oggetto XMLHttpRequest non è nullo
    if(ajax) {
    loader(elemento);
    // il link al file non deve essere usato
    usaLink = false;
    // impostazione richiesta asincrona in GET
    // del file specificato
    setTimeout('exeFunc(method, url, elemento)',1000);

    }

    return usaLink;
    }


    perfettamente funzionante se elimino il settimeout alla quart'ultima riga.
    come posso implementare il settimeout in modo che funzioni?
    Grazie

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    prova cosi:
    setTimeout(function(){exeFunc(method, url, elemento)},1000);
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Grazie mille funziona!
    Potresti spiegarmi perchè per richiamare le funzioni bisogna utilizzare questa sintassi?
    Grazie

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non è che bisogna e un altro metodo consigliato quando devi passare delle variabili nella funzione, io l'utilizzo molto perché lo trovo più pratico e veloce.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.