Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Es posible incluir un archivo de otro servidor?

Estas en el tema de Es posible incluir un archivo de otro servidor? en el foro de Frameworks JS en Foros del Web. Yo lo intente en IE, y te manda un mensaje de alerta, si das aceptar no te vuelve a preguntar, pero en otros navegadore,s por ...
  #1 (permalink)  
Antiguo 29/03/2006, 08:30
Avatar de Danger_  
Fecha de Ingreso: diciembre-2004
Ubicación: Queretaro, México
Mensajes: 395
Antigüedad: 19 años, 3 meses
Puntos: 0
Es posible incluir un archivo de otro servidor?

Yo lo intente en IE, y te manda un mensaje de alerta, si das aceptar no te vuelve a preguntar, pero en otros navegadore,s por ejemplo en FF, simplemente no te permite.

la preugnta es: Es posible llamar a un archivo externo para incluirlo, del moto " HTTP://servidor.com/dir1/archivo.php "?

No se, quizaz no con javascript, pero alguna forma de hacerlo con php? ( No pretendo obtener las variables de un lenguaje de servidor, simplemente obtener lo mismo que ajax, Una salida HTML pura. ) Gracias.

Saludos !
  #2 (permalink)  
Antiguo 30/03/2006, 16:36
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Si lo que pretendes es mostrar una página externa (obviamente su salida HTML) en algun div o tabla de tu página, eso lo puedes lograr sin inconvenientes desde JavaScript gracias a AJAX. Chequea el siguiente POST: http://www.forosdelweb.com/f127/get-url-true-no-funciona-376544/ donde txus35 deja la función necesaria para esa tarea (simplemente coloca una URL externa en el método open del objeto en lugar de un archivo "procesador") y únicamente hay que agregar la corrección que realicé yo en el siguiente POST. Eso es todo.

Saludos.
__________________
R4DS en español | R4DS en inglés
  #3 (permalink)  
Antiguo 30/03/2006, 21:03
Avatar de Danger_  
Fecha de Ingreso: diciembre-2004
Ubicación: Queretaro, México
Mensajes: 395
Antigüedad: 19 años, 3 meses
Puntos: 0
Amigo, yo se manejar las librerias ajax, y se como utilizarlas, pero si tu especificas un valor http ( ej: http://server.com/refer.html ) al cargarlo, en internet plorer te aparecera un alert de confirmacion, das aceptar y lo carga bien y ya no te vuelve a preguntar. Pero en FireFox, no te pregunta nada, ni lo carga.

La cuestion es si hay alguna manera de hacerlo sin ningun mensaje.
  #4 (permalink)  
Antiguo 30/03/2006, 22:04
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Hola Danger_, estuve probando los scripts y cuando intentas acceder a una URL externa mediante el método open de AJAX, tira un alerta de permiso denegado, cosa que no ocurre con URL de nuestro mismo servidor.

Para solucionar este problema lo que puedes hacer es que el objeto AJAX envíe una petición a una página en PHP (por ejemplo) y esta página mediante la función fopen (o equivalentes) obtenga su salida HTML, luego simplemente con funciones de manejo de archivos obtienes las lineas de ese HTML como si fuese texto plano y las envías al navegador para que sean mostradas en un div con innerHTML.
Básicamente en eso consiste la idea.

Saludos.
__________________
R4DS en español | R4DS en inglés
  #5 (permalink)  
Antiguo 02/04/2006, 09:24
Avatar de Danger_  
Fecha de Ingreso: diciembre-2004
Ubicación: Queretaro, México
Mensajes: 395
Antigüedad: 19 años, 3 meses
Puntos: 0
Amigo no te entendi mucho, podrias darme un ejemplo, plis...
  #6 (permalink)  
Antiguo 02/04/2006, 17:50
 
Fecha de Ingreso: marzo-2005
Mensajes: 59
Antigüedad: 19 años
Puntos: 1
con curl a lo mejor funciona

Estimandos leyendo lo que han escrito anteriormente, lo que se podria probar es utilizando las librerias de curl y php, no lo he probando en AJAX, pero si lo he hecho en otras aplicaciones y funciona bastante bien, obteniendo la pagina como html puro y se puede insertar e incluso enviar por correo electronico sin adjuntarse.

espero que sirva! saludos
  #7 (permalink)  
Antiguo 03/04/2006, 09:50
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Te pongo un ejemplo, sencillo pero ilusta la idea que expliqué antes. Luego tu eliges la posibilidad que mas se adapte a tus necesidades.

Archivo prueba.php, es el encargado de leer la página indicada, en este caso la de Google.

Código PHP:
<?php
$fp
=fopen("http://www.google.com""r");
while(!
feof($fp)) echo fgets($fp);
fclose($fp);
?>
Archivo prueba2.php, el que crea el objeto AJAX y llama a prueba.php para obtener los datos que ese script le envía sin recargar.

Código:
<html>
<head>
<script language="javascript" type="text/javascript">
function nuevoAjax()
{ 
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	var xmlhttp=false; 
	try 
	{ 
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			// Creacion del objet AJAX para IE 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); } 

	return xmlhttp; 
}

function blahblah()
{	
	var ajax=nuevoAjax();
	ajax.open("POST", "prueba.php", true);
	ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	ajax.send(null);
			
	ajax.onreadystatechange=function()
	{
		if (ajax.readyState==4)
		{
			document.getElementById("lala").innerHTML=ajax.responseText;
		}
	}
}
</script>

</head>
<body>
<div id="lala"></div>
<br><a href="#" onclick="blahblah()">Clickeame</a>
</body>
</html>
Faltan detalles como el tratamiento de caracteres especiales como acentos, y algunas otras cosillas, pero la idea es esa. Espero que te sirva para aclarar tus dudas, cualquier problema aquí estamos.

Saludos.
__________________
R4DS en español | R4DS en inglés
  #8 (permalink)  
Antiguo 08/05/2006, 18:10
 
Fecha de Ingreso: mayo-2006
Mensajes: 4
Antigüedad: 17 años, 11 meses
Puntos: 0
cuando trato de mostrar una pagina externa me arroja el siguiente error "permiso denegado", es raro porque cuando lo hago en mi pc funciona bien, me pide confirmacion pero cuando lo subo al servidor ya no funciona y arroja el error.

porque sera?
  #9 (permalink)  
Antiguo 27/06/2006, 11:58
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 3 meses
Puntos: 11
zaqpz es bien lentoooooooooooooooo
  #10 (permalink)  
Antiguo 27/06/2006, 17:08
 
Fecha de Ingreso: agosto-2005
Ubicación: Argentina, Capital Federal
Mensajes: 435
Antigüedad: 18 años, 8 meses
Puntos: 2
Cita:
Iniciado por richardinj
zaqpz es bien lentoooooooooooooooo
¿El script te resulta lento?
Bueno, lógicamente como se está accediendo a información de un servidor remoto dependemos del tiempo de respuesta de este servidor, que a su vez depende de unas cuantas otras variables. No se como la función fopen esté desarrollada, pero existe una forma más "directa" de leer una URL externa que es mediante el uso directo del protocolo HTTP.
Como experiencia personal te puedo decir que leer un contenido externo mediante la apertura de un socket y el uso del protocolo correspondiente puede resultar unas decimas de segundo mas eficiente, diferencia que puede resultar despreciable dependiendo de la magnitud del proyecto a realizar.
En fin, cualquiera sea tu elección de diseño del código siempre vas a estar atado a que tan lento esté ese servidor en el momento del acceso. Quizá te resulte util realizar un cacheo de los datos en tu BD para solo tener que realizar una lectura cada X cantidad de horas.

Saludos.
__________________
R4DS en español | R4DS en inglés
  #11 (permalink)  
Antiguo 28/06/2006, 07:58
 
Fecha de Ingreso: septiembre-2005
Mensajes: 26
Antigüedad: 18 años, 7 meses
Puntos: 0
El tema esta en que el metodo open acepta una URI en lugar de una URL, la URI es una pagina con ubicacion local dentro del server. Una solucion rapida a esto es armar un archivo php que solo tenga el include de la pagina externa, y por ajax llamar a ese php. Un ejemplo seria:
google.inc.php:
Código PHP:
<?include("http://www.google.com");?>
y en el archivo donde quiereas incluir esto lo haces de la manera habitual:
Código:
_ajxobj.open("GET","google.inc.php",true);
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:21.