Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Chiamare una servlet con JS

    Dopo essere riuscito a catturare l'evento di chiusura della finestra, ho la necessità che questo mi determini l'attivazione di una servlet.
    In pratica ho una pagina con un form, questo interagisce con un altro utente su un altro browser, è previsto un pulsante che termina l'interazione, ma se uno dei due chiude il browser dalla X l'altro resta bloccato perché non si accorge dell'uscita del primo.
    Facendo invece partire la stessa servlet che attiva il pulsante creato da me (fa parte di un form sulla pagina) tutto si risolverebbe.
    Io ho provato a catturare la chiusura del browser e facendo partire una funzione JS in questo modo:
    codice:
    ...
    function abbandonaProposta() {
    	document.lasciaproposta.submit();
    }
    ...
    <body onbeforeunload="abbandonaProposta()">
    lasciaproposta è il nome del form da attivare.
    La funzione viene chiamata regolarmente perché se metto un alert all'inizio, questo appare, se lo metto alla fine invece no, credo sia sintomo del fatto che la chiamata document.lasciaproposta.submit(); fallisca.

    Avete qualche soluzione da propormi?

  2. #2
    eheh, un bel salto nel mondo delle meraviglie...
    allora, devi considerare una cosa, se l'utente chiude il browser anche se fai un submit con il js il browser si chiude, dunque le chiamate in post, vanno perse.

    Purtroppo, io non credo che ci sia un modo per gestire questo problema in maniera certa: potresti mandare una chiamata Ajax in get alla tua servlet, vedendo se questo è sufficiente a gestire il tutto, ma nel momento in cui lanci la chiamata il browser si sta chiudendo, quindi non sei sicuro che i dati siano inviati in maniera corretta. Potresti provare a lanciare la chiamata ed a mettere un alert ("Stai per essere disconnesso") giusto per bloccare l'uscita quel tanto che basta per inviare la richiesta, ma, io l'ho provato, giusto per vedere, e già su Opera non funziona, poi avrà beccato si e no il 70% delle richieste, quindi non è molto affidabile.

    Comunque, in post sono sicuro che non vengono inviati, dato che il browser fa in tempo solo a lanciare la prima richiesta, senza neanche aver stabilito la comunicazione ed i dati di post non verrano mai inviati.

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Eh si, avevo provato a mettere un alert, ma non era servito a niente neanche a me.

    Ho fatto una prova mettendo un pulsante con evento
    onClick="document.lasciaproposta.submit()"
    lo so che non serve al mio scopo, ma volevo vedere se la servlet partiva, ma neanche questo lancia la servlet, per quale motivo? Non dovrebbe fare quello che fa il pulsante submit?

  4. #4
    e questo "lasciaproposta" che cos'è?

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    E' il nome del form su cui fare il submit, ho provato a metterlo anche come ID ma niente da fare ugualmente.

  6. #6
    A questo punto mi chiedo se hai letto quello che ho scritto...

    Originariamente inviato da artorius
    se l'utente chiude il browser anche se fai un submit con il js il browser si chiude, dunque le chiamate in post, vanno perse.

    ...
    Comunque, in post sono sicuro che non vengono inviati, dato che il browser fa in tempo solo a lanciare la prima richiesta, senza neanche aver stabilito la comunicazione ed i dati di post non verrano mai inviati.

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Si, ho letto, infatti nel mio post ho scritto "lo so che non serve al mio scopo, ma volevo vedere se la servlet partiva... e lo sto facendo con un pulsante, non chiudendo il browser, era una prova per vedere se almeno "document.lasciaproposta.submit()" attivava la servlet per non aver dubbi quando andrò ad utilizzarla ed ho scoperto che non lo fa, adesso mi domando il perché visto che cercando con google ho letto di un'infinità di persone alle quali una cosa del genere la servlet la fa partire.

  8. #8
    prova con una richiesta Ajax

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.