• User Newbie

    [AJAX] rimane visualizzato il confirm box

    Ciao,
    ho scritto un programma che alla richiesta del submit chiede conferma, poi esegue un XMLHttpRequest in modalità sincrona che prepara alcuni dati in un database e al termine del XMLHttpRequest richiama un programma che emette, in una nuova finestra, il risultato dell'elaborazione.
    Il mio problema è che mentre il XMLHttpRequest è in esecuzione, rimane visibile la finestra del confirm box, io invece vorrei che questa sparisse appena l'utente ha cliccato ok.
    come posso fare?

    Questo è il codice:

    <form name="form0" method=post action="/cgigrp/rptdsph.cgi" onsubmit="return elabora()"
    target="_blank">

    <script language=javascript>
    function elabora() {
    if (confirm('Conferma elaborazione?')) {
    pgmtocall = '/cgigrp/vg24rh0a.cgi';
    stringpar = 'cgcod=' + document.getElementById("cgcod").value
    + '&keyda=' + document.getElementById("keyda").value
    + '&keyal=' + document.getElementById("keyal").value;
    var client = new XMLHttpRequest();
    client.open("POST",pgmtocall,false);
    client.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    client.send(stringpar);
    .....
    .....
    return true;
    }
    else {
    return false;
    }
    }
    [LEFT] </script>[/LEFT]


  • User Attivo

    Non riesco a capire bene com'è fatta la pagina.
    E' visibile da qualche parte? Se si posta l'url che diamo un occhio 😉


  • User Newbie

    No, non è visibile perchè fa parte dell'intranet aziendale e non è accessibile dall'esterno.
    Ma questo problema l'ho risolto, ho scoperto che dipende dal browser, firefox lascia il confirm box, invece explorer lo toglie.
    Adesso invece ho un problema diverso, ho modifcato il programma per fare la chiamata in modo asincrono, per non lasciare l'utente come un piccione a guardare la videata bloccata.
    Con il modo asincrono non ricevo la risposta del server, cioè onreadystatechange non cambia mai di stato.
    Il server su cui gira il programma chiamato da xmlhttprequest è un iSeries versione 5.3
    Qualche idea?


  • User Attivo

    Bisognerebbe vedere il codice. Ad intuizione non è possibile.
    Di certo il readystate è lato client quindi il server, e quindi la parte lato server, c'entra poco...