¿Cómo obtener datos de un request post desde JqueryMobile?
Publicado: mayo 26, 2012 Archivado en: iphone, Jquery, Web 2.0 | Tags: Celular, jquerymobile, Mobile Deja un comentario »
Seguro que a más de uno le ha pasado el problema de enviar datos tipo POST a una página esperando que retorne la data ya ejecutada después del post. A mí me pasó y no encontraba una solución posible y sencilla, así que me leí casi la documentación completa de JqueryMobile y encontrarme con algo como esto (Resumo un poco): http://jquerymobile.com/demos/1.1.0/docs/pages/page-dynamic.html Internally, when the user clicks on one of these links, the application intercepts the internal$.mobile.changePage() call that is invoked by the frameworks’ default link hijacking behavior. It then analyzes the URL for the page about to be loaded, and then decides whether or not it should handle the loading itself, or to let the normal changePage() code handle things. The application was able to insert itself into the changePage() flow by binding to the pagebeforechange event at the document level:
// Listen for any attempts to call changePage().
$(document).bind( "pagebeforechange", function( e, data ) {
// We only want to handle changePage() calls where the caller is
// asking us to load a page by URL.
if ( typeof data.toPage === "string" ) {
// We are being asked to load a page by URL, but we only
// want to handle URLs that request the data for a specific
// category.
var u = $.mobile.path.parseUrl( data.toPage ),
re = /^#category-item/;
if ( u.hash.search(re) !== -1 ) {
// We're being asked to display the items for a specific category.
// Call our internal method that builds the content for the category
// on the fly based on our in-memory category data structure.
showCategory( u, data.options );
// Make sure to tell changePage() we've handled this call so it doesn't
// have to do anything.
e.preventDefault();
}
}
});
Pues vayamos a lo que nos concierne y nos ayudará, gracias a eso claro.
Este será el código javascript:
// Listen for any attempts to call changePage().
$(document).bind("pagebeforechange", function(e, data) {
// We only want to handle changePage() calls where the caller is asking to load a page by URL.
if (typeof data.toPage === "string") {
// We only want to handle #partypoint url.
var u = $.mobile.path.parseUrl(data.toPage);
var partypoint = /^#partypoint/;
if (u.hash.search(partypoint) !== -1) {
// Display PAGE for the selected URL.
showPage(u, data.options);
e.preventDefault();
}
}
});
// Generate markup for the page, and then make that page the current active page.
function showPage(urlObj, options) {
// Get the url parameter
var qrUrl = decodeURIComponent(urlObj.hash.replace(/.*url=/, ""));
// The div(role-page) we use to display section is already in the DOM.
// The id of the page we are going to write the content into is specified in the hash before the '?'.
var pageSelector = urlObj.hash.replace(/\?.*$/, "");
if (qrUrl) {
// Get the page we are going to write content into.
var $page = $(pageSelector);
// Get the header for the page.
var $header = $page.children(":jqmData(role=header)");
var markup = '';
//Select the data send to the post page (if you have it)
var Datasend=$("#formulario").serialize();
$.ajax({
url : qrUrl,
data : Datasend,
type : 'POST',
dataType : 'json',
success : function (data) {
// Find the h1 element in the header and inject the hostname from the url.
$header.find("h1").html(data.Title);
// Get the content area element for the page.
var $content = $page.children(":jqmData(role=content)");
markup = data.Data;
// Inject the data markup into the content element.
$content.html(markup);
// Make sure(if you want) the url displayed in the the browser's location field includes parameters
options.dataUrl = urlObj.href;
// Now call changePage() and tell it to switch to the page we just modified.
$.mobile.changePage($page, options);
},
error : function (jqXHR, textStatus, errorThrown) {
/*Make your error message*/
}
}); //Close Ajax
} // Close qrUrl
}//Close Function
Creamos la pantalla principal(index.html, por ejemplo):
Vamos a poner, como principal, un formulario, más abajo se explica, además tendremos que poner la sección donde se cargará el resultado:
<div data-role="page" class=".ui-page">
<div data-role="header" data-theme="b" data-position="fixed">
<h1>Party Point</h1>
</div>
<div data-role="content" class="wrapper">
<div class="ui-corner-top ui-header ui-bar-b">
<h1 class="ui-title" role="heading" aria-level="1">Login</h1>
</div>
<div class="ui-corner-bottom ui-content ui-body-c">
<fieldset class="container_12">
<form action="#partypoint?url=inc%2Flogin.php" method="post" id="formulario" name="formulario">
<input type="hidden" id="Accion" name="Accion" value="Login">
<div data-role="fieldcontain">
<label for="Username">Usuario:</label>
<input type="text" name="Username" id="Username" value="" data-mini="true" />
</div>
<div data-role="fieldcontain">
<label for="ClaveUser">Clave:</label>
<input type="password" name="ClaveUser" id="ClaveUser" value="" data-mini="true" />
</div>
<div class="ui-block-a">
<button type="submit" data-theme="b" data-mini="true" class="ui-btn-hidden" aria-disabled="false">Enviar</button>
</div>
<div class="ui-block-b">
<a href="#partypoint?url=inc%2Fregistrar.inc" data-role="button" data-rel="dialog" data-transition="pop" data-theme="b" data-mini="true">Registrarse</a>
</div>
</form>
</fieldset>
</div>
</div>
</div>
Aquí vemos que el formulario enviará el dato a esta url:
#partypoint?url=inc%2Flogin.php Tenemos varios datos que tomar en cuenta:
- #partypoint -> El Id de la sección donde irá la data que enviamos por ajax
- url= -> Indica lo que vamos a cargar
- inc%2FLogin.php -> Este es el archivo a cargar (inc/Login.php), se pone %2F para que lo interprete el script de arriba.
<div data-role="page" id="partypoint">
<div data-role="header" data-theme="b" data-position="fixed">
<a href="#home" data-icon="home" data-iconpos="notext" data-theme="f">Home</a>
<h1>Home</h1>
<a href="#home" data-icon="arrow-l" data-rel="back">Back</a>
</div>
<div data-role="content">
</div>
<div data-role="footer" class="ui-bar" data-theme="a" data-position="fixed" data-id="footer">
<a href="#about" data-icon="info">About</a>
</div>
</div>
Aquí vemos lo siguiente:
- id=”partypoint” -> El Id de la sección a editar a través del ajax.
- <h1>= -> Donde cargaremos el Título del ajax obtenido
- data-role=”content”-> Aquí cargaremos el contenido obtenido.
Veamos lo que hace ahora la ejecución del formulario, presionamos Submit(Enviar):
- El Script verificará si la data enviada tiene a #partypoint en su URL.
- #partypoint?url=inc%2Flogin.php
- Como lo contiene pues pasará por la función showPage().
- La función buscará el url.
- inc%2Flogin.php
- Buscamos el ID de la sección (data-role=”page” id=”¿?”)
- pageSelector=partypoint
- Convertimos a objeto el pageSelector y obtenemos el objeto header
- var $page = $(pageSelector);
- var $header = $page.children(“:jqmData(role=header)”);
- Serializamos la data del formulario
- var Datasend=$(“#formulario”).serialize();
- Envíamos la data y recibimos el json
- Modificamos el título
- $header.find(“h1″).html(data.Title);
- Buscamos la sección content y agregamos la data recibida
- var $content = $page.children(“:jqmData(role=content)”);
- $content.html(markup);
- Hacemos el cambio de página, como si hicieramos click pero lo hacemos por javascript:
- $.mobile.changePage($page, options);
Yo recomendaría agregar esta línea de código justo después del cambio de página:
$page.page(“destroy”).page();
Esto destruirá todo el diseño de la sección y lo volverá a crear. Esto lo hacemos porqué a veces si le das para atrás y ejecutas nuevamente una llamada ajax para rellenar la data pues esa “page” ya estará creada y no se recargará y la data que venga dentro no estará formateada visualmente, si destruyes la página y la vuelves a crear todo el diseño se recreará.
Se puede usar también $page.trigger(‘create’) ; Pero he visto que a veces no me funciona, o quizás lo esté haciendo mal, pero mejor ir a la lo seguro y que funciona perfectamente.
Aquí está el ejemplo, pero no está la página de Login.php, por si acaso:
http://jsfiddle.net/juanmboehme/bcvrc/
Crear una versión móvil de tu website solo usando Media Queries (CSS)
Publicado: marzo 14, 2012 Archivado en: css, diseño, media, Stylesheet, Web 2.0 Deja un comentario »Lo primero de todo es conocer un poco el uso de Media Queries en general, aquí hay una buena información que debería ser leída por todos los que son Desarrolladores ó Diseñadores WEB.
Para que nos funcione simplemente usaremos la etiqueta(tag) Link y la propiedad media con el Query en cuestión.
1- Ejemplo:
<link rel=”stylesheet” type=”text/css” href=”screen480.css” media=”screen and (min-width: 480px)” />
El Ejemplo 1 será útil para cualquier pantalla que tenga la resolución de un tamaño mayor a 480px.
2- Ejemplo:
<link rel=”stylesheet” type=”text/css” href=”screen.css” media=”screen and (min-width: 480px) and (max-width: 768px)“/>
El Ejemplo 2 aplicará como el Ejemplo 1 pero en este caso se restringue a resoluciones no mayores de 768px.
3- Ejemplo:
<link rel=”stylesheet” type=”text/css” href=”moviles.css” media=”handheld” />
En este 3er ejemplo no estamos usando un tamaño definido de pantalla sino más bien un tipo de dispositivo, en este caso tenemos el handheld, pero existen varios tipos entre ellos tenemos:
- all Used for all media type devices
- aural Used for speech and sound synthesizers
- braille Used for braille tactile feedback devices
- embossed Used for paged braille printers
- handheld Used for small or handheld devices
- print Used for printers
- projection Used for projected presentations, like slides
- screen Used for computer screens
- tty Used for media using a fixed-pitch character grid, like teletypes and terminals
- tv Used for television-type devices
Existe un problema con algunos dispositivos, sobre todo con Iphone.
Cuando creas tu css para utilizar en el iphone, en este caso 320px(viewport)-480px(landscape) verás que realmente el tamaño de la pantalla es 980px, aunque hayas definido el css anterior no lo tomaría en cuenta por 2 razones:
- La pantalla por defecto en el Safari es 980px
- Si está en viewport la pantalla es 320px y nosotros hemos definido “mayor de 480px“
Tenemos que hacer 2 cosas:
- Introducir este meta en nuestra página:
<meta name=”viewport” content=”width=device-width, initial-scale=1, maximum-scale=1″> - Modificar o crear un nuevo CSS indicando el tamaño que sea para un width menor de 481px.
El meta tag hará que el dispositivo tome el tamaño más grande con referencia a la pantalla(screen), con lo que veremos que al estar en landscape veremos el tamaño a 480px y cuando estemos en viewport estará en 320px.
YouTube estrena nueva interface, emulando un poco a la app de Facebook para iphone/ipad
Publicado: noviembre 18, 2011 Archivado en: Web 2.0 | Tags: interface, youtube Deja un comentario »Youtube.com esta estrenando nueva interface, y realmente quienes usamos iphone/ipad nos damos cuenta al instante que su parecido con la app de facebook para ios es innegable.
De 90′s: Intermission Piece Of My Heart
Publicado: octubre 10, 2011 Archivado en: Uncategorized, Web 2.0 | Tags: 90's, intermission, piece of my heart, techno Deja un comentario »Take this piece of my heart
And you’ll find my love
Take this piece of my heart
And you know that you have me
Take this piece of my heart
But be careful with what you’ve done
Take this piece of my heart
And I’ll love you endlesslyIce cold. That’s how you came
………..
When you call my name
Slowly I can feel the pain
Oh yeah I think I’m gone insane
Deep deep down hold a call
Hit me to every side of a wall
Teardrop oh in my eye
You laugh
And I start to cry
Tryin’ to hold me
Lie you told me
Using, abusing
Now you stall me
Stop! And slow it down girl
Oh I won’t be around
Let’s just keep this things together
Hold and last forever ever
Take it here right from the start
Yo! Take this piece of my heartTake a little piece of my heart
Destroy and kill and tear it apart
Love is all I got to give
Here’s a kind of life I live
Thinking about you, crying about you
Girl you got me thinking about you
Memories right here in my brain
And I can never forget the pain
That I had. Feeling bad
Losing girl of my life. Sad
Oh no. That’s not the way
…………… don’t play
I’m keeping you and not mistreat’n you
But teach you the things to do
And if ever we should fall apart
Yo! Take this piece of my heart
Local: La Democracia – Victor Victor y Gnomico
Publicado: octubre 10, 2011 Archivado en: Web 2.0 | Tags: Gnomico, La Democracia, Victor Victor, video Deja un comentario »gracias Narda
Facebook introduce herramienta para traduccion instantanea
Publicado: octubre 6, 2011 Archivado en: Web 2.0 | Tags: facebook, fan pages, tranduccion Deja un comentario »Facebook cada dia implementa alguna buena herramienta (opcion) para los usuarios, y no esta mal, esta vez es la traduccion instantanea de algun comentario, hasta el momento solo funciona en FanPages, pero me sabemos que con el tiempo se podra utilizar en los comentarios normales.
Si eres administrador de un Facebook FanPage para activar la opcion de traduccion: Edit Page -> Your Settings -> Admin, community and machine translators
No el blog no esta abandonado.
Publicado: septiembre 5, 2009 Archivado en: Web 2.0 2 Comentarios »Pues eso, se que tengo tiempo que no actualizo el blog, y las razones son … trabajo, lectura, nuevos conocimientos, en fin, es que estoy enfocado en estos ultimos dias a publicar mas cosas en mi blog como desarrollador web y como este blog es para “ocurrencias”, pues esta menos actualizado, pero no se preocupen que ya estoy
EL BLOG ESTA AHORA EN OTRO LUGAR
Publicado: mayo 2, 2009 Archivado en: Web 2.0 | Tags: asinox.net, cambido de dominio Deja un comentario »Pues una vez habia perdido mi dominio, igual tambien perdi el asinox.com, pero luego de eso tambien dejer perder el otro, asinox.net, pero ahora ya esta en mis manos nuevamente, asi que PARA MANTENERSE ACTUALIZADOS POR FAVOR …AHOR TODO ESTA EN ASINOX.NET
Saludos
Autoback up en Fireworks CS4
Publicado: diciembre 13, 2008 Archivado en: Web 2.0 | Tags: Autobackup, Fireworks CS4 Deja un comentario »Ahora que tenemos nuevas herramientas, en este caso Adobe Fireworks CS4, pues, tenemos mucho que actualizar, estudiar la nueva interface, las nuevas herramientas y muchas cosas mas, pero en este momento quiero dar a conocer, para los que aun no saben de este Addon para Adobe Fireworks CS4, AutoBackUP, asi es, algo que nos salvara la vida (digo a los que trabajamos en Santo Domingo, donde la energia electrica es autonoma).
Click en la imagen para descargar.
Iphone por fin en Santo Domingo
Publicado: diciembre 4, 2008 Archivado en: Web 2.0 | Tags: Claro, iphone 2 Comentarios »Como se habia escuchado sobre el iphone via Claro, que este jueves empezaria a estar disponible dicho telefono 3G en Santo Domingo (via Claro), pues aqui esta, y lo primero que hizo claro fue publicar sus planes, que para mi son pesimos, ya que mi interes no es hablar por el telefono, es usar la transferencia de Datos, los cuales son muy pocos (22 MB) y el costo por Mega adicionar es de RD$ 2.50 pesos.
Pero igual…aun no quiero salir de ni ipodtouch…ta nuevo
Lo que le pasa a quien cree que ta seguro de su mujer
Publicado: noviembre 1, 2008 Archivado en: Web 2.0 Deja un comentario »ajjajaja, yo me rio y es que , ejej por creer en estar seguro de tener algo o en alguien…jeejje
Las tipografias y el Stop motion….
Publicado: noviembre 1, 2008 Archivado en: Web 2.0 Deja un comentario »http://vimeo.com/moogaloop.swf?clip_id=1891426&server=vimeo.com&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1
Obama ’08 – Vote For Hope from MC Yogi on Vimeo.
Fecha para el Curso PHP & MySQL
Publicado: octubre 16, 2008 Archivado en: Web 2.0 | Tags: basico, curso, mysql, Php Deja un comentario »Ya tenemos fecha para el curso, el cual empieza en el mes de noviembre , sabados de 2-6 y domingo de 1-9
Cualquier informacion extra: asinox@gmail.com
Curso de PHP & Mysql básico
Publicado: octubre 9, 2008 Archivado en: Desarrollo web, Estandares, Web 2.0, Web Semántica | Tags: basico, curso, mysql, Php 2 Comentarios »Las personas que quieran tomar un curso sobre PHP & Myslq básico, por favor dejarme saber via los comentarios y les estare informando cuando empezara y donde, hasta ahora la fecha inicial es en noviembre, posiblemente 7 de noviembre, el curso sera de 5 horas diarias durante 5 dias, un total de 25 horas.
Algun interesado comunicarse via los comentarios.
Ahora en : Zend Framework + Smarty + web 2.0
Publicado: octubre 8, 2008 Archivado en: Desarrollo web, Web 2.0 | Tags: Php, prototype, scriptaculous, smarty, Web Frameworks, zend framework Deja un comentario »Luego de probar y decir que CodeIgniter es mi Framework para desarrollo, sigo manteniendo ese pensar, aunque me he comprado un libro super interesante ” Practical Web 2.0 Applications with PHP”, y es que de interesante tiene todo, aunque claro, no pense que tendria que mirar nada de Smarty ni ZF, pero para mi leer es tan importante como respirar, asi que he empezado a leer el libro sin nacer nada de lo que dice en la pc.
Ahora Smarty me parecia un poco “raro”, pero veo que hay ventajas para usar Smarty como Template Enginer, bien, ahora a comprar un libro de Smarty.
De igual forma ZF comparado con CI es muy engorroso, claro esta, CI viene a sustituir eso, lo dificil de algunos Frameworks, pero de igual forma ahora es tiempo de mirar Zend, que comparado con CI pesa 31.MB en zip, mientras que CI menos de < 1 MB.
Igual el ambiente esta preparado para Zend asi como para Smarty y Zend Studio (version prueba), y claro no olvidar la parte mas interesnate de todo esto Prototype y Scriptaculous lo que me dara el toque 2.0 a todo lo que esta en el libro.
Manos a la obra y pronto comentarios al respecto.
No mas IE 6
Publicado: octubre 7, 2008 Archivado en: Web 2.0 | Tags: CSS & XHTML, IE6, IE7 3 Comentarios »Y es que me canse de tener siempre que hacer fix para IE6, he dicho stop a tener que hacer algo para que renderize bien en IE6….. lo siento, ahora hare uso de JS para detectar la version del IE, si no esta disponible el IE7 o superior…. descarguelo.
Instalacion de CodeIgniter
Publicado: septiembre 8, 2008 Archivado en: Web 2.0 | Tags: CI, CodeIgniter, Desarrollo web, MVC, web 6 Comentarios »Pues como dije en el post, me he mudado para CodeIgniter y es que, las ventajas son muchas, de las cuales solo puedo mencionar la mas importante: Extensa documentacion, con ejemplos claros y reales, y es que la documentacion es el corazon de todas las aplicaciones, cosa que muchos de los demas Frameworks no tienen y si la tienen, es muy engorrosa.
INSTALANDO CODEIGNITER
1.- Descargar la version mas actual de codeigniter : codeigniter.com, hasta este momento es la version 1.6.3. (menos de 1MB)
2.- Descomprimir, navegar dentro de la carpeta CodeIgniter_1.6.3\CodeIgniter_1.6.3, allí existen 4 archivos (dos directorios y dos archivos), system, user_guide, index.php, licence.txt.
3.- Imaginando que ya tienes instaladon un paquete bajo window de apache, php y mysql, yo utilizo WampServer. Lo siguiente es crear una caperta en tu document root (en mi caso esta en E: WAMP/WWW), alli dentro de WWW crear una carpeta llamada CI o CodeIgniter (en verdad como gustes), y copiar los 4 archivos en contrados dentro de CodeIgniter_1.6.3\CodeIgniter_1.6.3 [system, user_guide, index.php, licence.txt].
4.- luego de eso, creo que estamos listo para dar una mirada al http://locahost/ci
En la proxima entrega… como configurar CI para empezar nuestra propia aplicacion.
nooooooooooooooo no no noooooooo
Publicado: septiembre 3, 2008 Archivado en: Web 2.0 Deja un comentario »jej e que no puede serrrrrrrr, jejej por Dios , jeje yo lo voy a poner aqui pa ver si alguien opina igual que yo, jeje pero que verguenzaaaaaaaaaa jeje
Y finalmente me mude para CodeIgniter
Publicado: agosto 13, 2008 Archivado en: Web 2.0 | Tags: CI, CodeIgniter, framework, Php 8 Comentarios »¿Qué es CodeIgniter?
CodeIgniter (CI) es un poderoso Framework PHP con una pequeña guia que nos detalla cada funcion del framework y como debemos usarla, esta construido para programadores PHP quienes necesitan un simple y elegante herramienta para crear aplicaciones completamente funcionales. Si eres web developer quien esta cansado de escribir tantas lineas de codigo y cansado de buscar y probar Frameworks los cuales no traen una buena guia para su utilizacion te recomiendo que pruebes CodeIgniter.












