
Código Javascript :
function extractCookieValue(val) { if ((endOfCookie = document.cookie.indexOf(";", val)) == -1) { endOfCookie = document.cookie.length; } return unescape(document.cookie.substring(val,endOfCookie)); } //function ReadCookie(cookiename) { function ReadCookie(name) { var numOfCookies = document.cookie.length; var nameOfCookie = name + "="; //var nameOfCookie = cookiename + "="; var cookieLen = nameOfCookie.length; var x = 0; while (x <= numOfCookies) { var y = (x + cookieLen); if (document.cookie.substring(x, y) == nameOfCookie) return (extractCookieValue(y)); x = document.cookie.indexOf(" ", x) + 1; if (x == 0){ break; } } return (null); //function deleteCookie(cookiename){ function deleteCookie(name){ var cookie_date = new Date ( ); // current date & time cookie_date.setTime ( cookie_date.getTime() - 3600 ); document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString(); } }
script ajax en el que envio el formulario y cargo la info en el grid:
Código Javascript :
function enviarDatos(){ var formulario = document.getElementById("formulario"); probadate1=document.getElementById('date1'); proba_date1=probadate1.value; probadate2=document.getElementById('date2'); proba_date2=probadate2.value; probachooser=document.getElementById('especies'); var txt=''; var i; var count = 0; for (i=0; i<probachooser.options.length; i++) { if (probachooser.options[i].selected) { if (count==0) txt+= "'"+probachooser.options[i].value+"'"; else txt+= "#'"+probachooser.options[i].value+"'"; } count++; } //hace la comparacion de las dos fechas compareDates('datechooser','date1','date2'); url_proba='date1='+proba_date1+'&date2='+proba_date2+'&especies='+txt; xhr(url_proba); } var xmlhttp; function xhr(formulario){ //funcion para crear las peticiones de XMLHttpResquest if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange = procesarRespuesta; xmlhttp.open("POST", "consulta2.php", true); xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); //xmlhttp.setRequestHeader("Content-length", 3); //xmlhttp.setRequestHeader("Connection", "close"); xmlhttp.send(formulario); } function procesarRespuesta(){ if(xmlhttp.readyState == 4) { if(xmlhttp.status == 200) { //recarga el grid al hacer la peticion. de salida esta a false para que no lo muestre. store.load(); } } }
y paso la url de la consulta en un javascript al grid :
Código Javascript :
proxy: new GeoExt.data.ProtocolProxy({ protocol: new OpenLayers.Protocol.HTTP({ //url: "data/especie.json", method:'GET', url: "consulta3.php?date1="+ReadCookie('date1')+"&date2="+ReadCookie('date2')+"&especies="+encodeURI(ReadCookie('especies')), format: new OpenLayers.Format.GeoJSON() }) })
como veis en este ultimo script en una parte envio el fichero "especie.json" a la url ¡esto funciona! pero creo que no es operativo si hay muchos usuarios ¿se machacarian la info unos a otros no?. la otra opcion es enviando la consulta3.php?date1="+ReadCookie('date1')... veo en firebug que la cookie la setea ¡¡pero no actualiza la info!! obtengo el GET anterior. Si envio el POST 20/10/2011 y 25/10/2011 y especie 14 en los parametros del GET sale los datos correctos y en la cabecera del GET las cookies, si cambio la fecha por ejemplo 18/20/2011... en los parametros del GET salen los valores anteriores, pero en las cabeceras si que estan las nuevas cookies ¡¡pero no se actualiza la info de la url!! y por consiguiente no se actualiza la info del grid, ahora que si recargo la pagina la ultima busqueda sale... ¿se puede hacer de alguna manera? espero que alguien me pueda ayudar porque no me aclaro... ¡gracias!