Quería saber cómo puedo hacer una consulta Mysql a una hora concreta con un reloj en Javascript que me ayudaron a hacer precisamente en este foro. Tengo entendido que hay que usar Ajax, pero he intentado incluir la parte de Ajax dentro del if de la hora que deseo, y todo deja de funcionar (el reloj y la consulta). ¿Alguna ayuda?
Muchas gracias por adelantado.
Código Javascript:
Ver original
function clock(id){ //El parametro id es donde se escribirá la hora var seeTime = "2017-09-21 00:43:30"; //fecha y hora de gatillamiento de evento var clock = document.getElementById(id); //Asignamos una variable al elemento del documento donde escribiremos la hora var Digital=new Date(); //Creamos el objeto Date para obtener la fecha completa var h = Digital.getHours(); //hora var m = Digital.getMinutes(); //mins var s = Digital.getSeconds(); //segs var year = Digital.getFullYear(); //año var month = Digital.getMonth()+1; //mes, +1 ya que este metodo da de 0-11 en vez de 1-12 var day = Digital.getDate(); //dia //Agregamos los 0 si son menores a 10 if(month < 10){ month = "0"+month; } if(day < 10){ day = "0"+day; } if(h < 10){ h = "0"+h; } if(m < 10){ m = "0"+m; } if(s < 10){ s = "0"+s; } var myTime = year+"-"+month+"-"+day+" "+h+":"+m+":"+s; //Esta variable es para obtener la fecha completa en formato "YYYY-mm-dd HH:mm:ss" PARA GATILLAR EVENTO h = parseInt(h); //Volvemos a hacer numerico la hora, ya que concatenmos arriba var hs = "PM"; //Damos la premisa que es PM. "hs" de hour system if(h > 12){ //Si la hora es mayor que 12.... h -= 12; //Quitamos 12 horas de modo que las 16hr es 16-12=4 } else{ //De no ser así dejamos tal cual y decimos que es AM hs = "AM"; } var showTime = h+":"+m+":"+s+" "+hs; //Obtenemos la hora a mostrar "HH:mm:ss AM/PM" clock.innerHTML = showTime; //Escribimos hora if(myUnixTime(myTime) == myUnixTime(seeTime)){ //Si myTime == seeTime gatillamos evento //Gatillamos evento document.getElementById('liveclock').innerHTML = "Hello World!"; } } function myUnixTime(d){ //Esta funcion obtiene los segundos de una fecha dada en formato "YYYY-mm-dd HH:mm:ss" en este caso la fecha es el parametro "d" var mArr = [31,28,31,30,31,30,31,31,30,31,30,31]; //Cantidad dias de c/mes var spl = d.split(" "); //Separamos la fecha de la hora spl[0] = fecha, spl[1] = hora var date = spl[0].split("-"); //Separamos los datos de la fecha date[0] = año, date[1] = mes, date[2] = dia // Es necesario usar parseInt() para obtener el valor numerico de los datos var y = parseInt(date[0])*365*24*60*60; //Agregamos los segundos que tiene un año var m = parseInt(date[1]); //Obtenemos el mes, lo usaremos luego var d = parseInt(date[2])*24*60*60; //Obtenemos los segundos de un dia //Aqui lo que haremos es sumar la cantidad de dias de los meses que han pasado var mAdd = 0; //Los dias se agregaran en esta variable for(var k=0;k<m;k++){ //Partimos desde el indice 0 de mArr (cantidad dias/mes) hasta el mes en el que estamos mAdd += mArr[k]; //Agregamos a mAdd la cantidad de dias de dias del mes con indice k } m = mAdd*24*60*60; //Obtenemos la cantidad de segundos del total de meses transcurridos var time = spl[1].split(":"); //Separamos los datos de la hora time[0] = hora, time[1] = mins, time[2] = seg var h = parseInt(time[0])*60*60; //Agregamos segundos en 1 hora var m = parseInt(time[1])*60; //Agregamos segundos en 1 min var s = parseInt(time[2]); //... return y+m+d+h+m+s; //retornamos la suma de todos los segundos obtenidos } window.onload=function(){ //Cuando la ventana cargue... setInterval("clock('liveclock')",1000); //Creamos un intervalo de 1000ms a la funcion myClock, ms= mili segundos, 1000ms = 1s };
La parte de Ajax que he intentado colocar en Javascript, concretamente entre las líneas 36 a 39, es esta:
Código XML:
Ver original
<script type="text/javascript"> $(document).ready(function() { function update(){ var current = $('#contenedor').text(); $.ajax({ type: "POST", url: "consulta.php", dataType: "json", success: function(response) { $('#contenedor').text(response); } }); } setInterval(update, 1000); }); </script>