Académique Documents
Professionnel Documents
Culture Documents
SESION 6
Curso de JQuery
Curso de JQuery
if ($_REQUEST['cod']==2)
echo "<strong>Tauro:</strong> Hoy los cambios sern
privados,
ntimos. Recuerdos. Ayuda, solidaridad. Asuntos en lugares
de retiro. Tu
cnyuge puede aportar buen status a tu vida o apoyo a tu
profesin.";
if ($_REQUEST['cod']==3)
echo "<strong>Gminis:</strong> Los asuntos de hoy tienen
que ver con las amistades, reuniones, actividades con
ellos. Da esperanzado,
ilusiones. Mucha energa sexual y fuerza emocional. Deseos
difciles
de controlar.";
if ($_REQUEST['cod']==4)
echo "<strong>Cancer:</strong> Este da la profesin
y las relaciones con superiores y con tu madre sern de
importancia. Actividad
en relacin a estos temas. Momentos positivos con
compaeros de
trabajo. Actividad laboral agradable.";
if ($_REQUEST['cod']==5)
echo "<strong>Leo:</strong> Este da los estudios, los
viajes, el extranjero y la espiritualidad sern lo
importante. Pensamientos,
religin y filosofa tambin. Vivencias krmicas de
la poca te vuelven responsable tomando decisiones.";
if ($_REQUEST['cod']==6)
echo "<strong>Virgo:</strong> Para este da toma
importancia
tu vida sexual, tal vez miedos, temas legales, juicios o
herencias. Experiencias
extraas. Hay karma de prueba durante este perodo en tu
parte psicolgica,
generndose algunos replanteos.";
if ($_REQUEST['cod']==7)
echo "<strong>Libra:</strong> Hoy todo asunto tiene que ver
con
tu pareja, tambin con socios, con la gente o el pblico.
Ellos
sern lo ms importante del da. Ganancias a travs
de especulaciones o del juego. Actividades vocacionales
artsticas.";
if ($_REQUEST['cod']==8)
echo "<strong>Escorpio:</strong> Hoy todo asunto tiene que
ver
con temas de trabajo y de salud. Presta atencin a ambos.
Experiencias
3
Curso de JQuery
Curso de JQuery
display: block;
padding: 3px;
width: 160px;
background-color: #f7f8e8;
border-bottom: 1px solid #eee;
text-align:center;
}
#menu a:link, #menu a:visited {
color: #f00;
text-decoration: none;
}
#menu a:hover {
background-color: #369;
color: #fff;
}
#detalles {
background-color:#ffc;
text-align:left;
font-family:verdana;
border-width:0;
padding:5px;
border: 1px dotted #fa0;
margin:5px;
}
Lo nuevo en este problema es que llamamos al mtodo ajaxStart con el mismo
objeto jQuery que llama al mtodo load:
function presionEnlace()
{
var pagina=$(this).attr("href");
var x=$("#detalles");
x.ajaxStart(inicioEnvio);
x.load(pagina);
return false;
}
Luego cuando se activa la peticin de la pgina al servidor el objeto jQuery llama a
la funcin inicioEvento, donde mostramos el gif animado:
function inicioEnvio()
{
var x=$("#detalles");
x.html('<img src="../cargando.gif">');
}
5
Curso de JQuery
por
el
Curso de JQuery
funciones.js
var x;
x=$(document);
x.ready(inicializarEventos);
function inicializarEventos()
{
var x;
x=$("#enviar");
x.click(presionSubmit);
}
function presionSubmit()
{
var v=$("#nro").val();
$.get("pagina1.php",{numero:v},llegadaDatos);
return false;
}
function llegadaDatos(datos)
{
alert(datos);
}
pagina1.php
<?php
$cuadrado=$_REQUEST['numero']*$_REQUEST['numero'];
echo $cuadrado;
?>
Veamos el cdigo JavaScript para comunicarse con el servidor:
Primero en la funcin inicializarEventos enlazamos el evento click al botn submit
del formulario:
function inicializarEventos()
{
var x;
x=$("#enviar");
x.click(presionSubmit);
}
Cuando presionamos el botn extraemos el valor del control text y llamamos a la
funcin $.get indicando el nombre de la pgina a llamar, un objeto literal con todos
los parmetros y sus valores (en este caso solo tenemos un parmetro llamado
numero) y finalmente el nombre de la funcin que se ejecutar cuando lleguen los
datos del servidor:
7
Curso de JQuery
function presionSubmit()
{
var v=$("#nro").attr("value");
$.get("pagina1.php",{numero:v},llegadaDatos);
return false;
}
La funcin que se ejecuta cuando llegan los datos del servidor recibe un string:
function llegadaDatos(datos)
{
alert(datos);
}
3 - $.getJSON
La funcin getJSON hace una peticin de datos al servidor considerando que
retorna la informacin con notacin JSON. La sintaxis de esta funcin es:
$.getJSON([nombre de la pgina], [parmetros], [funcin que
recibe los datos])
La funcin getJSON procede a generar un objeto en JavaScript y nosotros en la
funcin lo procesamos.
Problema:Confeccionar un sitio que permita ingresar el documento de una
persona y nos retorne su apellido, nombre y lugar donde debe votar.
pagina1.html
<html>
<head>
<title>Problema</title>
<link rel="StyleSheet" href="estilos.css" type="text/css">
<script type="text/javascript" src="../jquery.js"></script>
<script type="text/javascript" src="funciones.js"></script>
</head>
<body>
Ingrese dni (solo existen los valores 1,2 y 3):<input
type="text"
name="dni" id="dni" size="10"><br>
<input type="button" value="Enviar" id="boton1">
<div id="resultados"></div>
</body>
</html>
funciones.js
var x;
x=$(document);
8
Curso de JQuery
x.ready(inicializarEventos);
function inicializarEventos()
{
var x;
x=$("#boton1");
x.click(presionSubmit);
}
function presionSubmit()
{
var v=$("#dni").val();
$.getJSON("pagina1.php",{dni:v},llegadaDatos);
return false;
}
function llegadaDatos(datos)
{
$("#resultados").html("Nombre:"+datos.nombre+
"<br>"+"Apellido:"+
datos.apellido+"<br>"+
"Direccion:"+datos.direccion);
}
pagina1.php
<?php
header('Content-Type: text/txt; charset=ISO-8859-1');
$nombre='';
$apellido='';
$direccion='';
if ($_REQUEST['dni']=='1')
{
$nombre='Juan';
$apellido='Rodriguez';
$direccion='Colon 123';
}
if ($_REQUEST['dni']=='2')
{
$nombre='Ana';
$apellido='Maldonado';
$direccion='Lima 245';
}
if ($_REQUEST['dni']=='3')
{
$nombre='laura';
$apellido='Pueyrredon';
$direccion='Laprida 785';
}
9
Curso de JQuery
echo "{
'nombre':'$nombre',
'apellido':'$apellido',
'direccion':'$direccion'
}";
?>
Cuando se presiona el botn submit procedemos a realizar la peticin asincrnica
utilizando la funcin getJSON:
function presionSubmit()
{
var v=$("#dni").attr("value");
$.getJSON("pagina1.php",{dni:v},llegadaDatos);
return false;
}
Como hemos llamado a la funcin getJSON la misma nos retorna un objeto
JavaScript para procesarlo:
function llegadaDatos(datos)
{
$("#resultados").html("Nombre:"+datos.nombre+
"<br>"+"Apellido:"+
datos.apellido+"<br>"+
"Direccion:"+datos.direccion);
}
Tengamos en cuenta que el programa en el servidor debe retornar un archivo con
notacin JSON:
<?php
header('Content-Type: text/txt; charset=ISO-8859-1');
$nombre='';
$apellido='';
$direccion='';
if ($_REQUEST['dni']=='1')
{
$nombre='Juan';
$apellido='Rodriguez';
$direccion='Colon 123';
}
if ($_REQUEST['dni']=='2')
{
$nombre='Ana';
$apellido='Maldonado';
$direccion='Lima 245';
}
10
Curso de JQuery
if ($_REQUEST['dni']=='3')
{
$nombre='laura';
$apellido='Pueyrredon';
$direccion='Laprida 785';
}
echo "{
'nombre':'$nombre',
'apellido':'$apellido',
'direccion':'$direccion'
}";
?>
4 - $.ajax
Hasta ahora hemos visto que jQuery nos provee varias formas de recuperar y
enviar datos al servidor utilizando ajax:
1. Mtodo load
2. Funciones $.get y $.post
3. $.getJSON
Existe otra funcin llamada $.ajax que es la ms completa de todas, pero como
desventaja es ms compleja su empleo.
La sintaxis de la funcin $.ajax es:
ajax([objeto literal])
Retorna un objeto XMLHttpRequest que podemos eventualmente utilizarlo.
Con un ejemplo veremos las propiedades principales que podemos configurar en el
parmetro a enviar.
Problema:Implementar una aplicacin que calcule el cuadrado de un nmero que
ingresamos por teclado. La operacin se realiza en el servidor, le enviamos los
datos mediante la funcin de jQuery $.ajax
pagina1.html
<html>
<head>
<title>Problema</title>
<script type="text/javascript" src="../jquery.js"></script>
<script type="text/javascript" src="funciones.js"></script>
</head>
<body>
<form action="pagina1.php" method="post" id="formulario">
Ingrese nro:<input type="text" name="nro" id="nro"
size="10"><br>
11
Curso de JQuery
Curso de JQuery
function problemas()
{
$("#resultados").text('Problemas en el servidor.');
}
pagina1.php
<?php
$cuadrado=$_REQUEST['numero']*$_REQUEST['numero'];
echo $cuadrado;
?>
Veamos que datos podemos enviarle a la funcin $.ajax:
function presionSubmit()
{
var v=$("#nro").attr("value");
$.ajax({
async:true,
type: "POST",
dataType: "html",
contentType: "application/x-www-form-urlencoded",
url:"pagina1.php",
data:"numero="+v,
beforeSend:inicioEnvio,
success:llegadaDatos,
timeout:4000,
error:problemas
});
return false;
}
Hemos inicializado las siguientes propiedades:
async : Indica si la comunicacin ser asincrnica (true) o sincrnica (false)
type : Indica el mtodo que se envan los datos (pudiendo ser GET o POST)
dataType : Indica el tipo de datos que se va a recuperar (pudiendo ser
"html","xml","json","script")
contentType : Indicamos como se empaquetan los datos para enviarlos al
servidor (normalmente "application/x-www-form-urlencoded")
url : Indicamos el nombre de la pgina que procesar la peticin de datos.
data : Indicamos los datos a enviar al servidor.
beforeSend : Indicamos el nombre de la funcin que se ejecutar previo al
envo de datos (en nuestro ejemplo mostramos el gif animado que indica que
se inici el pedido de datos al servidor)
success : Indicamos la funcin que se ejecuta cuando finaliz el envo de
datos del servidor y adems ocurri todo en forma correcta (en nuestro
ejemplo recuperamos el dato devuelto y lo mostramos en la pgina)
timeout : El tiempo mximo a esperar por la peticin de datos.
13
Curso de JQuery
Curso de JQuery
x=$("#titulo2");
x.css("color","#ffff00");
x.css("background-color","#ff0000");
x.css("font-family","Arial");
});
})
Como podemos observar el cdigo a quedado mucho ms compacto.
Normalmente uno utiliza funciones annimos cuando el algoritmo contenido en la
funcin solo se requiere para dicho evento.
La sintaxis para definir una funcin annima:
x.ready(function(){
......
})
Como vemos llamamos al mtodo ready y entre parntesis incluimos la funcin tal
como las venimos implementando en conceptos anteriores pero sin nombre.
Tambin es interesante ver que podemos disponer otras funciones annimos
dentro de una funcin annima:
x.click(function () {
......
});
Curso de JQuery
16
Curso de JQuery
funciones.js
$(document).ready(function () {
$("#boton1").click(function () {
$("#descripcion").fadeTo("slow",0.5).hide("slow");
});
$("#boton2").click(function () {
$("#descripcion").show().fadeTo("slow",1);
})
})
estilos.css
.recuadro {
background-color:#ffffcc;
font-family:verdana;
font-size:14px;
border-top-width:1px;
border-right-width:3px;
border-bottom-width:3px;
border-left-width:1px;
border-top-style:dotted;
border-right-style:solid;
border-bottom-style:solid;
border-left-style:dotted;
border-top-color:#ffaa00;
border-right-color:#ff0000;
border-bottom-color:#ff0000;
border-left-color:#ffaa00;
}
Como podemos observar en la siguiente lnea tenemos llamadas encadenadas:
$("#descripcion").fadeTo("slow",0.5).hide("slow");
estilos.css
.recuadro {
background-color:#ffffcc;
font-family:verdana;
font-size:14px;
border-top-width:1px;
border-right-width:3px;
border-bottom-width:3px;
border-left-width:1px;
border-top-style:dotted;
border-right-style:solid;
border-bottom-style:solid;
17
Curso de JQuery
border-left-style:dotted;
border-top-color:#ffaa00;
border-right-color:#ff0000;
border-bottom-color:#ff0000;
border-left-color:#ffaa00;
}
Primero obtenemos la referencia del id descripcion, la funcin $ nos retorna un
objeto jQuery que utilizamos directamente para llamar al mtodo fadeTo para
aumentar su opacidad lentamente. Seguidamente el mtodo fadeTo nos retorna la
referencia del objeto jQuery y la utilizamos para llamar al mtodo hide indicndole
que oculte el div lentamente.
Es importante notar que los mtodos se ejecutan de izquierda a derecha.
Recordemos como era nuestro cdigo cuando comenzamos a estudiar jQuery:
var x;
x=$(document);
x.ready(inicializarEventos);
function inicializarEventos()
{
var x=$("#boton1");
x.click(ocultarRecuadro);
x=$("#boton2");
x.click(mostrarRecuadro);
}
function ocultarRecuadro()
{
var x=$("#descripcion");
x.fadeTo("slow",0.5);
x.hide("slow");
}
function mostrarRecuadro()
{
var x=$("#descripcion");
x.show();
x.fadeTo("slow",1);
}
Curso de JQuery
$("#boton2").click(function () {
$("#descripcion").show().fadeTo("slow",1);
})
})
Luego de haber estudiado jQuery con la metodologa larga no debera ser muy
difcil adaptarse a esta metodologa resumida.
estilos.css
.cuadradito{
background-color: #f00;
height: 50px;
width: 50px;
margin:3px;
z-index: -1;
}
19
Curso de JQuery
#divmensaje {
background-color: yellow;
position: absolute;
padding: 5px;
width:250px;
left:120px;
top:100px;
z-index: 100;
}
funciones.js
$(document).ready(function () {
$("body").append('<div id="divmensaje">hhhh</div>');
$("#divmensaje").hide();
$(".cuadradito").hover(function (e) {
$("#divmensaje").show();
$("#divmensaje").css("left",e.clientX+document.body.scrollLef
t+5);
$("#divmensaje").css("top",e.clientY+document.body.scrollTop+
5);
$("#divmensaje").load("pagina1.php?cod="+$(this).attr('id'));
},
function () {
$("#divmensaje").hide();
})
$(".cuadradito").mousemove(function (e){
$("#divmensaje").css("left",e.clientX+document.body.scrollLef
t+5);
$("#divmensaje").css("top",e.clientY+document.body.scrollTop+
5);
})
})
pagina1.php
<?php
if ($_REQUEST['cod']=='c1')
{
echo "<img src=\"../imagen1.jpg\">";
echo "<p>Primer tooltip.</p>";
echo "<p>aaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaa aaaaaa
aaaaaaaaaa";
20
Curso de JQuery
Curso de JQuery
function () {
$("#divmensaje").hide();
})
$(".cuadradito").mousemove(function (e){
$("#divmensaje").css("left",e.clientX+document.body.scrollLef
t+5);
$("#divmensaje").css("top",e.clientY+document.body.scrollTop+
5);
})
})
22