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>