Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Interactuación de JavaScript y PHP (https://www.clubdelphi.com/foros/showthread.php?t=36417)

dec 11-10-2006 08:17:20

Interactuación de JavaScript y PHP
 
Hola,

No sé siquiera si el título es correcto, pero, bueno, siempre puede cambiarse si es menester. Resulta que tengo un problema, o, por mejor decir, quisiera encontrar la solución para algo para lo cual me he quedado en blanco. Encuentro alguna manera de hacer lo que quiero, pero, me pregunto cómo podría hacerse de otro modo. Veréis.

Supongamos una página Web en donde los usuarios pueden gestionar y compartir sus URLs favoritas o interesantes o curiosas. Supongamos que queremos dar a los usuarios la posibilidad de que incluyan en sus propias páginas Web un listado con los últimos enlaces publicados en nuestra famosa aplicación, por ejemplo, o también un listado de sus últimos enlaces añadidos: los del usuario en cuestión.

Una forma de hacerlo podría ser proporcionar al usuario cierto código similar al siguiente, que podría incluir en su página Web allí donde quisiera mostrar la lista de enlaces de que venimos hablando:

Código PHP:

<script type="text/javascript" 
 
src="http://www.loturak.es/api/enlaces.php?usuario=pepejuan&enlaces=10">
</script> 

Bien. Hasta ahí llegamos, ¿no es cierto? El usuario podrá especificar su login y el número de enlaces que contendría el susodicho listado. Nosotros recogeríamos la variable "usuario" y "enlaces" y obraríamos en consecuencia.

Ahora bien... me gustaría ir un poco más allá, de manera que pudiera proporcionarse al usuario el siguiente código o similar:

Código PHP:

<script type="text/javascript">
//<![CDATA[
<!--
  var 
enlaces 10;
  var 
usuario 'pepejuan';
//-->
//]]>
</script>
<script type="text/javascript" 
 src="http://www.loturak.es/api/enlaces.js">
</script> 

Y aquí nos vamos acercando al meollo del asunto. Porque nosotros podemos procesar el archivo "enlaces.js" pensando que contenga código PHP, pero, ¿cómo demonios se mezclan ambas cosas, JavaScript y PHP? Tal vez sea una barbaridad, de hecho parece una guarrada.

¿Me veré obligado a recoger en el archivo "enlaces.js" las variables "enlaces" y "usuario" y a partir de ahí invocar a otro archivo (¿vía XmlHttpRequest?) que contenga el Script PHP que al cabo recabe de la base de datos los enlaces oportunos y produzca la salida adecuada?

¿Cómo lo veis vosotros? ¿Se os ocurre alguna idea? ¿Se entiende más o menos lo que pretende conseguirse?

Bueno. Gracias de antemano por vuestras siempre sabias, acertadas y nunca como se debe alabadas respuestas. :D

dec 12-10-2006 17:13:35

Hola,

Bueno. Pues al cabo de unas cuantas vueltas y de dejar un poco el tema he dado con lo que parece una solución. Creo que es además la habitual en estos casos, salvo que no había caído antes en ella.

Se trata de utilizar "iframes", o a lo menos así es como lo he podido conseguir. El siguiente es el código que un determinado usuario puede añadir en su propia página Web, es decir, se trata de un poco de código javascript:

Código PHP:

  <!-- Loturak www.loturak.es -->
  <
script type="text/javascript">
   
//<![CDATA[
   
<!--
    var 
enlaces 10;
    var 
usuario 'loginusuario';
   
//-->
   //]]>
  
</script>
  <script type="text/javascript"
   src="lista.js">
  </script>
  <!-- Loturak www.loturak.es --> 

Se ve que es posible especificar mediante ciertas variables el número de enlaces a listar y el login del usuario cuyos enlaces quieren listarse.

Estos datos los recogeremos en el archivo "lista.js", donde entra en juego el "iframe", como puede verse:

Código PHP:


var url 'lista.php?enlaces='+enlaces+'&usuario='+usuario;
document.write('<iframe style="border: none;" src="'+url+'" width="99%" height="99%" scrolling="auto">');
document.write('</iframe>'); 

Nos limitamos, pues, a mostrar el contenido de otro archivo, es decir, la salida del Script "lista.php" en el "iframe", el cual contará ya con los datos, con las variables correspondientes para realizar su cometido.

Ignoramos si hay una forma mejor, más elegante, más práctica de conseguir nuestro objetivo. ;)

roman 12-10-2006 17:40:03

¿Para qué es eso de <![CDATA[?

// Saludos

dec 12-10-2006 17:44:47

Hola,

Bueno. Tiene que ver con XML, y, por extensión, con XHTML. Si no se pusiera esa "marca" el código XML no se consideraría válido, peor aún (aunque me arriesgo a equivocarme), no se consideraría bien formado.

Pero, efectivamente, no respondo a tu pregunta... La verdad es que no me siento muy capaz. Te remito al W3C.

Cita:

CDATA sections may occur anywhere character data may occur; they are used to escape blocks of text containing characters which would otherwise be recognized as markup. CDATA sections begin with the string

roman 12-10-2006 22:27:24

Interesante problema. La verdad es que tardé en entender en qué consistía. Un par de preguntas:

1. ¿Lo intentaste con ajax?
2. ¿Por qué no usar la opción primera pasando los parámetros directamente al php?

// Saludos

D-MO 12-10-2006 22:45:13

Cita:

Empezado por roman
...¿Por qué no usar la opción primera pasando los parámetros directamente al php?

Claro, para que andarnos complicando la vida, además si lo que deseas es ocultar la extension php podrías hacer algo asi:

Código:

http://www.loturak.es/api/enlaces/pepejuan/10.js
ó
Código:

http://www.loturak.es/api/enlaces.js?usuario=pepejuan&enlaces=10
en lugar de
Código:

http://www.loturak.es/api/enlaces.php?usuario=pepejuan&enlaces=10
Ya sabes, con nuestro amigo Apache se hacen maravillas.

Saludos

dec 13-10-2006 09:38:56

Hola,

Gracias por vuestro interés. En realidad todo es por una cierta comodidad y sencillez a la hora de que alguien sin altos conocimientos (como vosotros) pueda utilizar el código JavaScript que se le proporciona.

No sólo eso. Ahora son dos variables, y pasar dichas variables por la URL podría valer, pero, en caso de añadir más variables, lo que no será extraño, puesto que se trata de una especie de "mini aplicación" que puede "personalizarse", si se añaden más variables, digo, la opción de la URL se vuelve cada vez más "complicada".

Además se convirtió en una especie de obsesión. Quería hacerlo de ese modo, puesto que así lo hacen aplicaciones de Google, por ejemplo (y otras muchas) y no quería "conformarme" con enviar las variables mediante la URL.

En cuanto a usar o no "AJAX"... pues aunque al principio pensé que fuera una posibilidad, lo cierto es que cuando apareció el "iframe" dejó de ser necesario, creo que añadiría una complejidad innecesaria al asunto, creo, ¿eh? ;)

En cuanto a que Apache haga maravillas... ¿quién lo duda? El archivo ".js" es forzado a procesarse como PHP, y, aunque su contenido podría ser acaso sólo JavaScript, lo cierto es que en este caso concreto, como digo, sí se hace uso en parte de PHP.

Y, bueno. No sé qué más puedo decir. Ah, sí. Muchas gracias otra vez por vuestro interés. ;)

Edito: aquí el Hilo que acabo de añadir al apartado de noticias.

roman 13-10-2006 17:18:52

Cita:

Empezado por dec
alguien sin altos conocimientos (como vosotros)

Y sí, bueno, siempre he sabido del límite de mis conocimientos, pero no hacía falta publicarlo :D

Y sí, imaginé que era por cuestiones de facilidad para configuración. Ayer haciendo pruebas vi que podrías ahorrarte el js. A fin de cuentas el iframe y el url los puedes poner en el código a "copiar y pegar" construyendo la url como lo haces ahora. Así, sigues teniendo una parte donde el cliente cambia de manera cómoda las variables.

// Saludos

dec 13-10-2006 17:52:27

Hola,

Cita:

Empezado por Román
Y sí, bueno, siempre he sabido del límite de mis conocimientos, pero no hacía falta publicarlo

:o :o :p :p

Cita:

Empezado por Román
Y sí, imaginé que era por cuestiones de facilidad para configuración. Ayer haciendo pruebas vi que podrías ahorrarte el js. A fin de cuentas el iframe y el url los puedes poner en el código a "copiar y pegar" construyendo la url como lo haces ahora. Así, sigues teniendo una parte donde el cliente cambia de manera cómoda las variables.

Pues sí. Puede que me lo plantee, efectivamente. Gracias Román. ;)


La franja horaria es GMT +2. Ahora son las 05:19:32.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi