Originariamente inviato da dottwatson
beh

se ti dimentichi questi 'piccoli particolari' ...

effettivamente, se si dimenticano questi "piccoli particolari insignificanti", la cosa cambia aspetto.
E' chiaro che la risposta è una sola: ajax. Con la pagina nascosta si può fare certo, ma è un poco più complicato ed è un "tornare indietro" invece che "andare avanti".

Con ajax è "banale". Basta naturalmente avere la giusta libreria. Da qui puoi scaricarti abc.js

http://webreflection.blogspot.com/20...asic-call.html


L'esempio di codice è pure banale. Uso una pagina asp.net, linguaggio c# lato server. Tu puoi utilizzare la parte client ed usare php per la parte server.
codice:
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        string comando_ajax = this.Request.QueryString["comando_ajax"];
        if (comando_ajax == "1")
        {
            string Checkbox1 = this.Request.Form["Checkbox1"];
            this.Response.Write("Checkbox1 era " + Checkbox1 );
            this.Response.End();
            
        }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
<script language="javascript" type="text/javascript">
// <!CDATA[


function Checkbox1_onclick(v) 
{
    var url = "?comando_ajax=1";
    var parametri = {colore:"rosso", numero:999, Checkbox1:v.checked};
    parametri.onLoad = onload;
    parametri.onError = onerror;
    
    ABC(parametri, url);
    
    function onload(request, elapsedTime)
    {
        alert(request.responseText);
    }
    
    function onerror(xhr, elapsedTime)
    {
        alert("Errore di trasmissione: " + xhr.status);
    }
    
}

// ]]>
</script>
    
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <label for="Checkbox1">Chiamata server con ajax:</label><input id="Checkbox1" type="checkbox" onclick="return Checkbox1_onclick(this)" />
    </div>
    </form>
</body>
</html>

<script type="text/javascript">
/** ABC - Ajax Basic Call
 * @author  Andrea Giammarchi
 * @site        www.devpro.it */
ABC = (function(ABC){
    return  function(data, url, async, user, pass){
        var time    = new Date,
            abc     = ABC(),
            send    = [],
            key     = null;
        if(data){
            for(key in data)
                if(typeof data[key] !== "function" && data.hasOwnProperty(key)){
                    if(data[key] instanceof Array)
                        for(var i = 0; i < data[key].length; i++)
                            send.push(encodeURIComponent(key).concat("=", encodeURIComponent(data[key][i])));
                    else
                        send.push(encodeURIComponent(key).concat("=", encodeURIComponent(data[key])));
                }
            key = 0 < send.length ? send.join("&") : null;
        };
        abc.open(
            key !== null ? "POST" : "GET",
            url,
            async = async === undefined ? true : !!async,
            user !== undefined && user,
            pass !== undefined && pass
        );
        abc.setRequestHeader("If-Modified-Since", "Mon, 26 Jul 1997 05:00:00 GMT");
        abc.setRequestHeader("Cache-Control", "no-cache");
        abc.setRequestHeader("X-Requested-With", "XMLHttpRequest");
        if(key !== null)
            abc.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        if(async)
            abc.onreadystatechange= function(){
                if(abc.readyState === 4 && data){
                    key = /^(2|3)[0-9]{2}$/.test(abc.status) ? "onLoad" : "onError";
                    if(typeof data[key] === "function")
                        data[key](abc, new Date - time);
                }
            };
        abc.send(key);
        return  abc;
    };
})(this.XMLHttpRequest ?
    function(){return new XMLHttpRequest;} :
    function(){return new ActiveXObject("Microsoft.XMLHTTP");}
);
</script>