#1• 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! |
#2• 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). |
#3• 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 |
#4• Envié un ppt con un gráfico y códigos (me resultó más sencillo para organizar la idea). |
#5• 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. |
#6• 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. |
#7• 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. |
#8• 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. |
#9• 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 |
#10• 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 |
#11• 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 |
#12• 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. |
#13• 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 |
#14• 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. |
#15• que es un hosting? como creo uno? |
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 | ||||
Tema | Usuarios | Respuestas | Visitas | Actividad |
---|---|---|---|---|
Por: ctxtech, el 21/Oct/2014, 15:40 | 0 | 2k | Oct/14 | |
Por: gjohnj, el 24/Jun/2008, 19:54 | 1 | 5k | Jun/08 | |
Por: Teclis425, el 06/Abr/2006, 11:18 | 1 | 4k | Apr/06 | |
Por: canarion72, el 02/Ago/2005, 21:38 | 0 | 5k | Aug/05 | |
Por: Ch3r1f, el 18/Ago/2004, 22:15 | 4 | 10k | Aug/04 |