Newsgroup: it.comp.lang.javascript
Titolo: Intercettare pagina inesistente

Scusate la domanda da super-niubbio ma non so come fare una cosa. Ho un 
semplicissimo script in javascript che ho creato "rubacchiando" codice qua e 
la e adattandolo alle mie esigenze.
Praticamente immettendo una stringa in un campo si viene indirizzati verso 
una data pagina web. Nonostante la sua estrema semplicità va benissimo per i 
miei scopi.
L'unico problema è che vorrei che se la stringa inserita nel campo manda ad 
una pagina inesistente, anzichè darmi il messaggio del browser di "pagina 
non trovata" e simili, mi appaia una finestrella di javascript in cui 
avverte l'utente che lo username è errato e rimanesse nella pagina corrente 
(permettendo quindi di inserire lo username corretto). Praticamente dovrei 
verificare se la pagina esiste o meno prima di attivare effettivamente il 
link a quella pagina.
Spero di essermi spiegato in modo un minimo comprensibile.
Questo è il codice:
-----------------------------------------------------------------------------
<html>
<head>
<script>
function invia(){
    var 
url="
http://www.nomemiodominio.it/aree_riservate/
"+document.accesso.username.value+"/home.htm";
    window.location.replace(url);
}
</script>
</head>
<body>
      <form name="accesso">
    <input type="text" name="username" value="Username">
    <input type="button" name="send" value="Conferma" onClick="invia()">
</form>
</body>
</html>
-----------------------------------------------------------------------------
Grazie.
-- 
Massy 

 pagina corrente (permettendo quindi di inserire lo username corretto).
Client-side non puoi. Dovresti fare una verifica sul nome digitato, ma 
ovviamente in questo modo avresti lo username nel codice.
Potresti, via "ajax", inviare lo username, verificarlo e restituire un 
valore true/false. La verifica devi farla per forza server-side.

 valore true/false. La verifica devi farla per forza server-side.
Potresti spiegarmi come dovrei fare per fare la verifica lato server?
Avevo trovato questo codice  ma non sono stato capace di implementarlo:
----------------------------------------------------------------------------
var cb_obj;
function test_page(url)
{
        var     res;
        if (!cb_obj)
        {
                if (window.XMLHttpRequest)
                        cb_obj=new XMLHttpRequest();
                else
                        cb_obj=new ActiveXObject("Microsoft.XMLHTTP");
                if (!cb_obj)
                        return '-cb_obj ERROR';
        }
        cb_obj.open("GET", '/check.chtml?url=' + encodeURIComponent(url),
false);
        cb_obj.send(null);
        res = cb_obj.responseText;
        return res;
}
...
        if (test_page(testo_digitato) == 'OK')
                document.location.href = ...testo_digitato;
        else
                alert("EEEH?!?");
-----------------------------------------------------------------------------
Grazie.
-- 
Massy

                 alert("EEEH?!?");
vuol dire che la tua pagina dovrà restituire un "valore" 
"testo_digitato"="OK" (se è tutto ok) ... però, come dicevo, 
l'implementazione server-side dipende dal linguaggio che userai (non da 
javascript).

 newsgroup di php.
[CUT]
Grazie delle info.
Ora vedo se riesco a "barcamenarmi" in qualche modo...
Altrimenti lascerò che in caso di username inesistente restituisca pagina 
non trovata e pace...
-- 
Massy 

 link a quella pagina.
Se la pagina a cui devi andare è nel medesimo dominio, puoi usare
l'oggetto XMLHttpRequest:
var http = new XMLHttpRequest();
http.open("HEAD", url, true);
http.onreadystatechange = function() {
    if (http.readyState == 2) {
        if (http.status == 404) {
            alert("URL not found");
        } else {
	    window.location.replace(url);
	}
    }
}
http.send(null);
Nota che il IE<7 non ha l'oggetto XMLHttpRequest, e per creare una sua
istanza devi passare per gli ActiveXObject. In rete, e negli archivi di
questo NG, trovi diversi esempi su come fare. Ma IE6 dovrebbe
generalmente non essere più preso in considerazione per lo sviluppo.
Perfino la Microsoft, durante la JSConf a Berlino mentre presentava IE9,
ha esordito con "Innanzitutto, scusateci per IE6".
-- 
"When you have eliminated the impossible, whatever remains, however
improbable, must be the truth."

 generalmente non essere più preso in considerazione per lo sviluppo.
Infatti mi sono disinteressato completamente, anche per le altre parti del 
sito di supportare IE6 (e la cosa è esplicitamente indicata nel sito 
stesso)!
Grazie.
-- 
Massy 

 Grazie.
Fammi sapere.
