18/10/2012, 04:11
|
| | Fecha de Ingreso: febrero-2009
Mensajes: 29
Antigüedad: 15 años, 10 meses Puntos: 1 | |
problemas con array php y javascript en jquery Buenas, estoy teniendo un problema que ya llevo horas intentando solucionar pero no veo la razón del problema.
Lo que estoy intentando hacer es pintar los dias de un calendario jquery creado con jquery.datepicker.
vale esto es facil con el siguiente código:
//primero declaro el array con los dias que quiero marcar
var diasmarcados = ['17-10-2012', '25-10-2012', '05-10-2012', '17-11-2012'];
Creo el datepicker y en el evento beforeShowDay creo una funcion
que por cada dia del calendario comprueba si existe en el array de diasmarcados
y si existe en el array lo marca con un style css.
$( "#datepicker" ).datepicker({
altField: "#dinsert",
beforeShowDay: function(date) {
var current =$.datepicker.formatDate('dd-m-yy', date);
return jQuery.inArray(current, diasmarcados) == -1 ? [true, ''] : [true, 'ui-state-hover', 'ui-state-highlight'];
}
}, $.datepicker.regional[ 'es' ] );
Vale hasta aqui bien. Se me enmarcan los dias que he puesto en el array con un marquito de color y funciona perfectamente.
El problema me viene cuando ese array de dias marcados lo quiero cargar dinamicamente desde una consulta php. Para ello lo que hago es hacer una llamad .ajax a un fichero php tal que así:
var diasmarcados = new Array() ;
$.ajax({
type: 'POST',
async:false,
url:'ConsultarBloqueos.php',
data:'medico='+'11',
dataType:'script',
success:function(msg){
diasmarcados=msg;
}
});
el fichero consultarbloqueos.php lo que hace es consultar la base de datos y devolver
una cadena con las fechas separadas por comas, pongo el código.
<?php
include_once("php/dbconfig.php");
include_once("php/functions.php");
function getBloqueos($medico){
try{
$db = new DBConnection();
$db->getConnection();
//$sql = "select * from `medicos` ";
$sql="select fechaini, fechafin from blocked where medico=".$medico." order by fechaini";
$handle = mysql_query($sql);
while($row = mysql_fetch_assoc($handle)){
$sqldos="CALL DIAS_PERIODO('2012-10-05', '2012-10-08')";
$handle2 = mysql_query($sqldos);
while($row2 = mysql_fetch_assoc($handle2)){
$trozos=explode("-", $row2[FECHA]);
$fechajs=$trozos[2]."-".$trozos[1]."-".$trozos[0];
$rows[]=" '".$fechajs."'";
}
}
}catch(Exception $e){
}
$rows=implode(",", $rows);
return $rows;
}
$medico=$_POST['medico'];
$bloqueos= getBloqueos($medico);
echo $bloqueos;
?>
Esto devuelve en la variable $bloqueos una cadena como esta " '06-10-2012', '07-10-2012', '06-10-2012'"
que es la que luego en el .ajax, recojo y asigno a la variable javascript diasmarcados tal cual pongo arriba. bien pues resulta que de esta manera no me pinta los dias. Por que?
Pues depurando con el Firebug puedo observar que lo que llega a la variable diasmarcados es distinto cuando lo cargo a mano desde javascript que cuando lo cargo desde el php.
concretamente cuando examino el valor de la variable con Firebug lo que aparece
en el primer caso es exactamente esto ["17-10-2012", "25-10-2012", "05-10-2012", "17-11-2012"]
Sin embargo cuando lo cargo dinamicamente con el php
lo que obtengo en la variable es lo siguiente:
"'17-10-2012', '25-10-2012', '05-10-2012', '17-11-2012'"
Aparenta ser un problema de tipos de datos, porque en este ultimo caso parece que lo que llega no es un array si no una cadena. Pero porqué me puede estar ocurriendo esto? no hago bien la asignación?
Alguien me puede ayudar?
Saludos y gracias de antemano. |