Avatar Image
Colega ;)
Colega ;)

Antes de nada explicar qué es lo que quiero hacer. Aquí el tema es que yo reviso las tablas de un tema del foro en busca del nombre de usuario. Por ejemplo, podrían ser algunos como EffectedCard, PaseanteDelForo o McBeth. Una vez han sido extraídos, necesito hacer una consulta a la base de datos en busca de un dato X determinado. El problema viene en cómo ejecutar esa consulta a la base de datos ya que los ficheros no cargan en el mismo servidor.


He aquí los métodos que he intentado:


1. Lanzar una Consulta AJAX

Este método consiste en ejecutar el fichero y ver el ResponseText para añadirlo a una variable o trabajar con él como yo quiera. El problema que tiene es que no admite servidores cruzados. A pesar de que ambos ficheros están alojados en la misma página, el problema es que uno de los scripts se ejecuta en el foro bajo el dominio mforos.com ergo no hay forma de hacer que se ejecuten en el mismo dominio ni crear un fichero proxy.php que lo ejecute de manera "oculta".


2. Ejecutar el fichero en un Iframe

Este método consiste en cargar el fichero que me interesa en un iframe y sacarle el contenido mediante javascript. El problema es que, al parecer, eso sólo es posible, al igual que antes, si ambos ficheros se encuentran en el mismo servidor.


3. Crear un element script y añadirlo al primer div de la página

Sencillamente consiste en crear un nuevo elemento con el script src que me interesa y, dentro de éste, puede haber diverso contenido. Básicamente su problema es que, por mucho que yo lo añada donde lo añada, la carga del script es posterior a la ejecución de la siguiente línea del código desde donde lo cargo y necesito que primero cargue el fichero en su totalidad. Las posibles variaciones han sido:

3.1 El Contenido es la Consulta en Sí

Consiste en que dicho script es el que contiene la consulta de la variable al estilo var array[0]='contenido'; El problema es el descrito anteriormente, que carga más tarde y cuando intento usar variable=array[0]; no "existe".

3.2 El Contenido es un document.write('div')

Aquí lo que hacía era un document.write con una capa y una id con el objetivo de sacar el contenido como eval(document.getElementById). El problema con éste está que al hacer el document.write carga una página en blanco con sólo ese contenido.

3.3 Crear o Modificar una Capa Ya Existente

Básicamente consistiría en crear un nuevo elemento div y añadirlo al primer div de la página o, en su defecto, modificar el innerHTML de uno ya creado para poder extraer el contenido como en 3.2. El problema es el de siempre, el fichero carga posteriormente y al sacar el innerHTML no hay contenido


4. Emplear un document.write("<script>")

Esta solución ha sido lo más aproximada a la solución perfecta que he podido. Al parecer es similar a las soluciones que dan para JSON, pero tampoco me ha resuelto el problema. Consiste en hacer un document.write("<script>") y cargar el fichero que me interesa. El contenido de éste sería similar a los empleados en el método 3. Su principal problema es que, en Firefox, carga el fichero con retraso. No lo carga a posteriori, cuando ya ha terminado de cargar todo, como en el método tres; pero sigue ejecutando código antes de habese terminado de cargar. El tema es que si yo necesito sacar un dato para la celda 1, tal vez, ese dato lo tenga disponible cuando esté revisando la celda 4. Además, en el resto de navegadores ni siquiera sucede eso y parece que sí lo carga a posteriori.

4.1 El Contenido es la Consulta en Sí

Éste es el que mejor ha funcionado pero con los problemas descritos anteriormente.


Cualquier posible solución o idea es extraordinariamente bien recibida.

¡GRACIAS!

Avatar Image
@man / @woman
@man / @woman

Me animo, a ver si esto sirve (muy parecido a la 1ra opción que has intentado):

- en cada servidor pones un script php (el secreto es que el script actúa como admin con el pass del espacio). Este script recibe el/los parámetros de búsqueda en la base de datos, hace la consulta y devuelve los resultados en una tabla html (por ej: "<tr><td>dato 1</td><td>dato 2</td><td>dato 3</td><td>dato n</td></tr>").

- en la página que debe realizar las distintas consultas (pc cliente), armas con AJAX las consultas a cada script php pasándoles los parámetros que cada uno necesita, a cada resultado lo incluyes con innerhtml o innertxt (a gusto) en un div o tabla (<table></table> que ya contendrá los estilos).

Avatar Image
Colega ;)
Colega ;)

GestionXls, muchas gracias. Últimamente estás resolviendo mis dudas. Te comento.

No he entendido muy bien la segunda parte de lo que dices, así que voy a intentar interpretar tu método y me corriges. Si te parece, claro.

Tú dices que haya un fichero que haga la consulta a la base de datos, según los datos recibidos doy por hecho, y cree tablas (con ids, por simplificar la extracción de datos) con el resultado.

Después, ha de haber otro fichero que envíe dichas consultas mediante AJAX para que se creen las tablas. ¿No es así?

Ahí el problema es cómo enviar esos datos. No lo puedo hacer con AJAX, como dices, porque cada uno de los ficheros se ejecuta en dominios separados. Si lo hacemos con iframe, la creación de un elemento script o un document.write("<script>") es justo los casos que he mencionado anteriormente.

Estoy seguro que has intentado aportar una clave que no he sabido ver. Así que corrígeme donde creas oportuno.

Voy a explicarte, además, como lo tengo ahora porque quizás aclare un poco más la estructura.

Existe un fichero agradecimientos.php alojado en un espacio web de webcindario. Éste es incluido mediante script en un foro miarroba. De esta forma, el fichero interpreta que su dominio de ejecución es foro.mforos.com. Éste es el fichero que envía los datos extraídos con javascript y que requiere base de datos. No es posible hacerlo directamente con php porque la información es extraída previamente con javascript.

Existe un fichero i_usuario.php en el mismo dominio que hace la consulta que se le pida conforme a los parámetros $_GET enviados. Después saca el contenido que sea necesario (tablas, código javascript, capas, lo que sea necesario).

Gracias. Un Saludo

Avatar Image
@man / @woman
@man / @woman

Envié un ppt con un gráfico y códigos (me resultó más sencillo para organizar la idea).

Avatar Image
Colega ;)
Colega ;)

Muchas Gracias por tomarte tiempo y molestia en el fichero.

Ahora bien, el método que me has mandado es justamente el que utilicé en el método 1. La misma estructura (sólo que la consulta se realiza en un único fichero), prácticamente el mismo código de consulta (ajax).

El error que tira el Firefox es el siguiente:

Error: uncaught exception: [Exception... "Access to restricted URI denied"  code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)"

Si se investiga en internet, observarás que es, justamente, porque ambos ficheros no están (según el javascript) en el mismo servidor.

En cualquier caso, gracias. Si se te ocurre otra forma, no dudes en comunicarme la idea.

Avatar Image
Colega ;)
Colega ;)

Con la orientación de McBeth he conseguido solucionarlo.

Para que le sirva a más gente en el futuro, explico lo que he hecho.

En primer lugar, para enviar la información, lo que he hecho es trabajar en un iframe. No obstante, NO he cargado una página en el src sino que he modificado el contenido y he añadido un script del siguiente método: window['iframe'].document.write('<script>'); De esta forma, ese iframe es como si estuviera alojado en el mismo servidor y puedo trabajar con él.

El fichero que carga en el script es el que tiene la consulta a la base de datos y lo que hace es un document.write('<div id="capa">'); esto, es escribir una capa y, dentro, los datos javascript que necesito recuperar (por ejemplo variable='5'; ). Para recoger los datos he utilizado un eval(capa.innerHTML).

Todo muy bonito, el problema es que, obviamente, el script tarda más en cargar que mi siguiente línea de código (lo que pasaba con el método 3.1). Por tanto, me he olvidado de modificarlo al mismo tiempo.

He cogido y he sacado a un array todos los datos que me interesaba. Le he pasado al iframe todos los datos para que haga la consulta. Al script le he añadido un onLoad="funcion()" para que, cuando haya cargado, ejecute una función que me modifique las tablas pertinentes.

Y así, todo los problemas solucionados.

No sé si ha quedado muy claro, podéis preguntar.

Muchas Gracias.

Avatar Image
@man / @woman
@man / @woman
Escrito originalmente por EffectedCard

El error que tira el Firefox es el siguiente:

Error: uncaught exception: [Exception... "Access to restricted URI denied"  code: "1012" nsresult: "0x805303f4 (NS_ERROR_DOM_BAD_URI)"

No me quedé con lo dicho, hoy -en mi servidor- he creado 3 espacios web para probar esto y las consultas han funcionado bien; luego he creado 3 espacios en mi@ y -sorpresa- no funciona; debe ser alguna configuración de los servidores Apache de mi@ lo que inhabilita que funcione como era esperado.

¿ alguien tiene idea de cual es el parámetro de configuración de Apache (y su valor) que provoca esto?

En ningún caso me devolvió este mensaje de error.

Avatar Image
Colega ;)
Colega ;)

Es posible, no lo sé, que te detecte dos espacios de webcindario como uno único con diferentes subdominios. Aunque no estoy seguro que cruce subdominios AJAX.

Otra opción es la que dices tú de la configuración.

La verdad, no lo sé. El caso es que ya está solucionado.

Avatar Image
@man / @woman
@man / @woman

Tampoco me dejó cargar puro HTML (es decir: sin elaborar por un script PHP), continúo con la idea que es algún parámetro de configuración del servidor.

Con iframes, es como has explicado, ni siquiera hace falta AJAX, sólo javascript apuntando a un php (con parámetros) que haga la consulta.

Saludos

Avatar Image
Colega ;)
Colega ;)
Escrito originalmente por GestionXls

Con iframes, es como has explicado, ni siquiera hace falta AJAX, sólo javascript apuntando a un php (con parámetros) que haga la consulta.

Tampoco puedes emplear el iframe si los ficheros están alojados en servidores diferentes (o si eso es lo que interpreta). La solución definitiva que aporté yo, no era diferente a la de crear un elemento script directamente. Ambos tenían el problema que cargaban a posteriori.

Para que funcionara tuve que hacer el cambio en la estructura de la programación para que cargara todo al final y una vez el script ya se hubiera ejecutado.

Un Saludo

Avatar Image
@man / @woman
@man / @woman

Aparentemente sí se puede con distintos espacios web y servidores, ve este link: https://panel.webcindario.com/

Como verás, usa iframes, son 3 espacios webcindario (los originales) y agregué uno nuevo en otro servidor (atwebpages).

Este es el código del script php del último agregado (los otros 2 son análogos):

Spoiler:

<?php
$var=isset($_GET['var'])?trim($_GET['var']):'';
if($var=='') echo 'Sin datos.';
echo "$var $var $var $var";
?>

Avatar Image
Colega ;)
Colega ;)

Comprobando tu código en Firefox, efectivamente envía el código (bueno el último servidor no carga). Ahora bien, ahora yo te pido que ese código que ha cargado dentro de los iframe, lo necesito ejecutar en la ventana principal como un código javascript. Algo sencillo, modificar el innerHTML de una capa. Verás como no se puede. Con los de Webcindario es posible que sí (tampoco seguro, por ser mismo dominio pero diferente subdominio); con el servidor externo seguro que no.

No sé si explico bien dónde está el problema. Enviar no es conflictivo, el problema es RECIBIR los datos de lo enviado.

Avatar Image
@man / @woman
@man / @woman

Con IE a partir de la ver 5.01 en adelante se ejecutó completo (la versión 4.01 da error de script y las anteriores no lo ejecutan), con Opera 8.51 y 9... y FF también funcionó completo (se recibió los datos replicados según lo previsto).

Me centré en ver si se podía cargar datos desde distintos espacios y servidores (externos). Si no se ejecutó completo (sobre todo el tercer iframe), puede ser que tengas alguna interferencia de parte de los ISP.

En resumen, la interacción con distintos servidores (enviar y recibir) es posible.

En cuanto a pasar JavaScrip por este método: JavaScript NO es HTML, no puedes usar o -quien sabe- no debería funcionar innerHTML.

Saludos

Avatar Image
Colega ;)
Colega ;)

Insisto. No me has entendido o no me he explicado lo suficientemente bien.

En la actualidad, el script que estoy utilizando carga en un iframe un código con los datos que yo le pido y me los carga dentro de una capa (en tu ejemplo sería enviar la palabra que se ha de repetir). Posteriormente, en la página que carga el iframe (y no en el iframe en sí) modifico una capa con el texto exacto que ha cargado dentro de la capa del iframe.

Si logras hacer eso en servidores cruzados con AJAX, te admiro ;-)

Claro que se puede enviar datos a un iframe independientemente de en qué servidor esté alojado. De hecho, basta con hacer document.getElementById('id_del_frame').src='url'; no es necesario nada más complicado. El problema es recoger los datos luego en el fichero original. Ese era el conflicto.

lie-666
Usuario Novato
Usuario Novato

que es un hosting? como creo uno?

Avatar Image
Colega ;)
Colega ;)

Te aconsejo crees nuevos temas en los subforos apropiados para tus dudas.

Un hosting es ESTO. Y lo puedes crear AQUÍ.

SI TIENES MÁS DUDAS, CREA UN NUEVO TEMA EN EL SUBFORO APROPIADO

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 21/Oct/2014, 15:40
ctxtech0965Oct/14
Por: , el 24/Jun/2008, 19:54
gjohnj Caos.X15kJun/08
Por: , el 06/Abr/2006, 11:18
Teclis425 sk.valshk14kApr/06
Por: , el 02/Ago/2005, 21:38
canarion7205kAug/05
Por: , el 18/Ago/2004, 22:15
Ch3r1f QuiNtaN ivanitoweb410kAug/04