Foros del Web » Programando para Internet » Javascript »

Obtener datos desde documento externo

Estas en el tema de Obtener datos desde documento externo en el foro de Javascript en Foros del Web. Muy buenas, agradeceria si me pudieseis explicar como hacer lo siguiente: Tengo 2 archivos HTML. Uno sería la 'home', por decirlo así, el otro, es ...
  #1 (permalink)  
Antiguo 25/07/2011, 01:50
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 7
Obtener datos desde documento externo

Muy buenas, agradeceria si me pudieseis explicar como hacer lo siguiente:
Tengo 2 archivos HTML. Uno sería la 'home', por decirlo así, el otro, es un documento con la siguiente estructura:
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <link rel="shortcut icon" href="favicon.ico" />
    <title></title>
    <script type="text/javascript" src="****_productos_plantilla_scripts.js"></script>
	<style>
			body 										{ 	margin:0; padding:0; height:100%; font-family:Verdana, Geneva, sans-serif; font-size:0.9em; font-family:"kozgopro-extralight"; src: url('kozgopro-extralight.otf') format(“opentype”); }
		/* Estilos para el DOCUMENTO */
			@font-face									{ font-family: "kozgopro-extralight";src: url("kozgopro-extralight.otf") format("opentype");}
			#kontainer									{ width:700px; height:100%; margin-left:50%; margin-bottom:50px; padding:0; position:relative; left:-350px; font-size:1em;}
			#cabecera									{ width:100%; background-image:url(cabecera.png);  background-position:center;  background-repeat:no-repeat;  width:100%; 
															height:110px; border-bottom:2px solid rgb(186,0,181); cursor:pointer; }
			#cabecera>div								{ height: 110px; width: 100%;}
		/* Estilos para "galería de imágenes" */
			#images										{ background: #CCC; border-bottom: 1px solid rgb(186,0,181); border-top: 1px solid rgb(220,127,218); 
															display: block; height: 145px; max-height: 500px;}
			#images2									{ background: none; border: 1px solid #666; margin-top: 20px;}
				#images2 p								{ margin-top:50px;}
				#vistaprevia							{ border: 1px solid #666; display: block; margin: 10px; width:auto;}
				#titulo_foto							{ position:absolute; top:20px; left:20px; }
			#img_prev									{ background: #FFF; border: 1px solid #666; display: block; height: 100px; left: -302px; margin-left: 50%; 
															margin-top: 20px; position: relative; width: 604px;}
				#img_prev ul							{ display: block; margin: 0; margin-left: auto; padding: 0; text-align: center;}
					#img_prev ul li						{ border-left: 1px dotted black; display: block; float: left; height: 100px; list-style: none; width: 100px;}
					#img_prev ul div :first-child		{ border:none; cursor:pointer;}
				#img_prev_								{ width: 615px;}
					.sombra 							{ background:url(1.png); position:relative; width:100%; height:100%; z-index:10}
					.sombra:hover 						{ background:none;}
					.miniatura 							{ display:block; background:none; position:relative; top:-100px; width:100%; height:100%; z-index:9;}
			#title										{ display:block; border-bottom: 1px solid rgb(186,0,181); color: #666; display: block; font-size: 1.5em; position: relative; text-align: left; text-transform: uppercase;}
		/* Estilos para contenido TEXTO */
			#content									{ display: block; margin-left: 20px; margin-right: 20px; position: relative; text-align: justify;}
				.titulo									{ display:block; font-size:1em; color:#751848; text-transform:uppercase; margin-top:50px;}
				.subtitulo								{ display:block; font-size:1.2em; font-weight:normal; text-decoration:underline; text-transform:uppercase; color:#751848; margin-top:10px; padding-left:50px;}
				.parrafo_indent_1						{ display:block; margin:0px; margin-top:10px; word-wrap: break-word; overflow:hidden;}
				.parrafo_indent_2						{ display:block; margin-left:15px; margin-top:10px;}
				.parrafo_indent_3						{ display:block; margin-left:30px; margin-top:10px;}
				.listas									{ display:block; font-size:1em; list-style:circle; color: #751848;}
				.listas p 								{ color:#000; line-height:0.5em;}
				.listas li:hover						{ list-style:disc;}
				blockquote 								{ background:#CCC; display: block;padding: 0 100px;width:75%; font-style:italic; color:#333; margin-left:-20px;}
					blockquote:before, blockquote:after {color:#751848;display: block;font-size: 420%;}
					blockquote:before 					{content: '\201C';height: 0;margin-left: -0.8em; padding-top:10px;}
					blockquote:after 					{content: '\201D';height: 30px;margin-top: -25px; padding-bottom:10px;margin-left: 8.5em;}
					
					
					
		/* Estilos para menú de navegación principal y cabecera */
			ul.navigator,
			ul.navigator li,
			ul.navigator ul 			{ 	margin: 0; padding: 0; font-weight:bold; border-top:1px solid rgb(186,0,181); list-style: none; }
			ul.navigator 				{ 	position: relative;z-index: 597; float: left; }
			ul.navigator li 			{ 	padding: 7px 10px; float: left; line-height: 1.3em; border-style: solid; border-width: 1px 1px 1px 0; border-color: #fff #fff rgb(238,191,236) #fff; background-color:#f1f1f1; color: #000; }
			ul.navigator li.hover,
			ul.navigator li:hover 		{ 	position: relative; z-index: 599; cursor: default; background-color:#e7e7e7; color: #000; }
			ul.navigator>li a:hover 	{ 	color:#751848; }
			ul.navigator ul 			{ 	margin-top: 1px; visibility: hidden; position: absolute;top: 100%; left: 0; z-index: 598; width: 100%; width: 150px; }
			ul.navigator ul li 			{ 	float: none; font-weight: normal; }
			ul.navigator ul ul 			{ 	top: -3px; left: 100%; }
			ul.navigator li:hover > ul 	{ 	visibility: visible; }
			ul.navigator a:link,
			ul.navigator a:visited		{ 	color: #000; text-decoration: none; }
			ul.navigator a:hover		{ 	color: #000; }
			ul.navigator a:active		{ 	color: rgb(186,0,181); }
			#menu_nav					{ 	margin-left:-200px; position:absolute; top:111px; left:50%; }
			#menu_nav li				{	cursor:pointer;}
			#menu_nav li a 				{	font-weight:bold;}
	</style>
</head>

<body onload="carga()">
	<div style="position:absolute; top:110px; width:100%; border-bottom:2px solid rgb(186,0,181);"></div>
    
<div id="kontainer">

    <div id="cabecera"><div onClick="window.location.reload()"></div></div>
    
    <div id="title">
        <p class="titulo">
            &raquo;<script>document.write(varFamilia_formato)</script>
        </p>
    </div>
    
    <div id="images">
      <div id="img_prev">
        <ul>
          <div id="img_prev_">
            <li id="imagen1" onclick="previo('Título imagen','fotodeprueba.jpg')">
            	<a class="sombra" style="display:block;"></a>
                <script>document.write(miniFoto1)</script>
            </li>
            <li id="imagen2" onclick="previo('#CC66CC')">
            	<a class="sombra" style="display:block;"></a>
                <script>document.write(miniFoto2)</script>
            </li>
            <li id="imagen3" onclick="previo('#FFCCFF')">
            	<a class="sombra" style="display:block;"></a>
                <script>document.write(miniFoto3)</script>
            </li>
            <li id="imagen4" onclick="previo('#FF0000')">
            	<a class="sombra" style="display:block;"></a>
                <script>document.write(miniFoto4)</script>
            </li>
            <li id="imagen5" onclick="previo('#00FF00')">
            	<a class="sombra" style="display:block;"></a>
                <script>document.write(miniFoto5)</script>
            </li>
            <li id="imagen6" onclick="previo('#0000FF')">
            	<a class="sombra" style="display:block;"></a>
                <script>document.write(miniFoto6)</script>
            </li>
          </div>
        </ul>
      </div>
    </div>
    
    <div id="images2" style="display:none;">
        <p>
            <div id="titulo_foto"></div>
            <a style="float:right;cursor:pointer; position:absolute; top:20px; right:20px;" onclick="chapa()">[cerrar]</a>
        </p>
        <p id="vistaprevia" style="display:block">
        </p>
    </div>
    
    <div id="content"> <!--Introducir Variable Javascript-->
        <p class="parrafo_indent_1">
        	<script>document.write(varNombre_formato)</script>
            <script>document.write(varDescripcion)</script>
        </p>
        <p class="parrafo_indent_3">
        </p>
        <blockquote>
   			<script>document.write(varQuote);</script>
        </blockquote>
    </div>
    
    <div>
        <div style="width:100%; height:110px;" onClick="window.location.reload()"></div>
        <ul id="menu_nav" class="navigator navigator-horizontal">
            <li><a href="./****.html#nav****">*****</a></li>
            <li><a href="./****.html#navContacto">Contacto</a></li>
            <li><a href="./****.html#navProductos">Productos</a></li>
            <li><a href="http://www.****.com" target="_blank">****.com</a></li>
        </ul>
    </div>
    
</div>    
</body>
</html> 
Como veis, imprime unas variables mediante document.write

Encontré un método para pasar las variables entre documentos:
En la página de origen:
Código:
<a href="destino.htm?var1=1&var2=2"></a>
Código:
/* Pasar variables de una página a otra */
	function pasarVariables(pagina,nombres){
		pagina +="?";
		nomVec=nombres.split(",");
		for(i=0;i<nomVec.length;i++)
		pagina +=nomVec[i] + "=" + escape(eval(nomVec[i]))+"&";
		pagina=pagina.substring(0,pagina.length-1);
		location.href=pagina;
	}
En la página de destino:
Código:
<script>document.write(var1)</script>
Código:
/* Pasar variables de una página a otra */
function pasarVariables(pagina,nombres){
pagina +="?";
nomVec=nombres.split(",");
for(i=0;i<nomVec.length;i++)
pagina +=nomVec[i] + "=" + escape(eval(nomVec[i]))+"&";
pagina=pagina.substring(0,pagina.length-1);
location.href=pagina;
}
Al tener que introducir una cantidad considerable de datos, me quedan unas url larguísimas, y no solo es antiestético, si no que es un coñazo a la hora de modificar lo que sea.

Hay algun modo de hacer esto de otra forma? cargando documentos de texto o algo parecido?
  #2 (permalink)  
Antiguo 25/07/2011, 01:52
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 7
Respuesta: Obtener datos desde documento externo

me dijeron algo del método load() de jquery, pero he estado mirando y -por lo menos lo que yo he entendido- sirve para cargar datos en el mismo documento en que te encuentres... que no es exactamente lo que yo busco
  #3 (permalink)  
Antiguo 26/07/2011, 01:15
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 7
Respuesta: Obtener datos desde documento externo

¿26 lecturas y ninguna respuesta? ¿en serio? :(
  #4 (permalink)  
Antiguo 27/07/2011, 01:22
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 7
Respuesta: Obtener datos desde documento externo

Por favor, necesito ayuda con este asunto
  #5 (permalink)  
Antiguo 27/07/2011, 04:05
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 7
Respuesta: Obtener datos desde documento externo

Se me ha ocurrido que con algo parecido a esto:
Código HTML:
function producto(idenificador){
	var url
	if ( typeof( window[ identificador ] ) != "undefined" ) {
		if(identificador==x){
			//	CAMPOS TEXTO
				var	varFamilia		="";
				var	varNombre		="";
				var	varDescripcion		="";
				var	varQuote		="";
				var	tituloPagina		="";
			//	FOTOS
				var	miniFoto1		="";
				var	miniFoto2		="";
				var	miniFoto3		="";
				var	miniFoto4		="";
				var	miniFoto5		="";
				var	miniFoto6		="";
			//	COMBINADAS
				var url = "<a class=\"linkprod\" href=\"ibermedic_productos_plantilla.html?" + varFamilia + "?" + varNombre + "?" + varDescripcion + "?" + varQuote + "?" + tituloPagina + "?" + miniFoto1 + "?" + miniFoto2 + "?" + miniFoto3 + "?" + miniFoto4 + "?" + miniFoto5 + "?" + miniFoto6 + "\" target=\"_self\">xxxx</a>"
		}
		if(identificador==y){
			//	CAMPOS TEXTO
				var	varFamilia		="";
				var	varNombre		="";
				var	varDescripcion		="";
				var	varQuote		="";
				var	tituloPagina		="";
			//	FOTOS
				var	miniFoto1		="";
				var	miniFoto2		="";
				var	miniFoto3		="";
				var	miniFoto4		="";
				var	miniFoto5		="";
				var	miniFoto6		="";
			//	COMBINADAS
				var url = "<a class=\"linkprod\" href=\"ibermedic_productos_plantilla.html?" + varFamilia + "?" + varNombre + "?" + varDescripcion + "?" + varQuote + "?" + tituloPagina + "?" + miniFoto1 + "?" + miniFoto2 + "?" + miniFoto3 + "?" + miniFoto4 + "?" + miniFoto5 + "?" + miniFoto6 + "\" target=\"_self\">xxxx</a>"
		}
	}
	else {
		window.alert('El identificador introducido no existe');
	}
}
Podria tomar los datos desde un *.js (que ya es un avance) lo malo es que con más de 100 productos que he de introducir, (a parte de que será un coñazo) ¿no tardaría mucho en ejecutar la función? Quizás sea una pregunta estúpida, pero no tengo ni idea.
Por otro lado, ¿hay alguna forma de hacer esto más ligero?
  #6 (permalink)  
Antiguo 27/07/2011, 04:13
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 16 años
Puntos: 66
Respuesta: Obtener datos desde documento externo

con cookies puedes pasar datos de una página a otra.

saludos.
  #7 (permalink)  
Antiguo 27/07/2011, 06:17
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 7
Respuesta: Obtener datos desde documento externo

Cita:
Iniciado por ceSharp Ver Mensaje
con cookies puedes pasar datos de una página a otra.

saludos.
Gracias por tu respuesta, ceSharp, ¿podrías explicarme un poco mejor cómo se te ocurre hacer esto con cookies?

He encontrado esto y esto... Pero viene a ser algo muy parecido a lo que tengo ahora. Con lo que estamos igual.... ¿no?
  #8 (permalink)  
Antiguo 27/07/2011, 06:33
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 16 años
Puntos: 66
Respuesta: Obtener datos desde documento externo

Desde la página que quieres enviar los datos, lo mandas así:

Código HTML:
Ver original
  1. document.cookie =  'cookie1=valor1';
  2.     document.cookie = 'cookie2=valor2';
cookie1 y cookie2 son, por así decirlo, el nombre de la variable, y valor1 y 2, evidentemente su valor. document.cookie trata todo lo que mandas como strings, así pues podrías enviar lo que quieras de esta manera
Código HTML:
Ver original
  1. var variableX = 'un valor';
  2. document.cookie = 'cookie1='+variableX;
puedes ponerle fecha de caducidad a las cookies, pero si no la pones duran lo que dura la sesión.
Para recoger las cookies en la otra página se tratan también como strings:
Código Javascript:
Ver original
  1. var totCookies = document.cookie;
  2.     var x = document.cookie.split(';');
  3.     var y = x[0].split('=');
  4.     var datos = y[1];
así pues, en arrays, rescatas todas las cookies con su identificador y su valor.

saludos.
  #9 (permalink)  
Antiguo 27/07/2011, 06:53
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 7
Respuesta: Obtener datos desde documento externo

¿y las cookies pueden contener múltiples variables?
  #10 (permalink)  
Antiguo 27/07/2011, 07:01
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 16 años
Puntos: 66
Respuesta: Obtener datos desde documento externo

una cookie es un string que va creciendo, a medida que vas metiendole datos:

document.cookie = 'c1=1';
document.cookie = 'c2=2'; //con esto el valor de la cookie se queda como 'c1=1;c2=2'

y así sucesivamente.

saludos.
  #11 (permalink)  
Antiguo 29/07/2011, 02:49
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 7
Respuesta: Obtener datos desde documento externo

:( llámame tonto.... pero no acabo de entender el ejemplo que me pusiste antes; ni cómo usar las cookies para hacer lo que quiero...
  #12 (permalink)  
Antiguo 29/07/2011, 04:21
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 16 años
Puntos: 66
Respuesta: Obtener datos desde documento externo

ejemplo:

(página que envía)
Código HTML:
Ver original
  1. <html xmlns="http://www.w3.org/1999/xhtml" >
  2. <head >
  3.     <title>Enviar_cookie</title>
  4. </head>
  5. <script type="text/javascript">
  6. window.onload =function ()
  7. {
  8.     var x = 'valor1';
  9.     document.cookie =  'cookie1=' + x;
  10.     document.cookie = 'cookie2=valor2';
  11. }
  12.     <form id="form1" action="RecibirCookie.html" method="post" >
  13. <input type="submit" value="ok" />
  14.     </form>
  15. </body>
  16. </html>

(página que recibe las cookies)
Código HTML:
Ver original
  1. <html xmlns="http://www.w3.org/1999/xhtml" >
  2.     <title>Recibir_cookies</title>
  3. </head>
  4. <script type="text/javascript">
  5. window.onload=function()
  6. {
  7.     var totCookies = document.cookie;
  8.     var x = document.cookie.split(';');
  9.     var y = x[0].split('=');
  10.     var datos = y[1];
  11. }
  12.  
  13.     <form id="form1">
  14.     <div>
  15.    
  16.     </div>
  17.     </form>
  18. </body>
  19. </html>

una vez que se reciben en la página se separan por punto y coma:

document.cookie = "cookie1=valor1;cookie2=valor2"

con un split podemos separar todas las cookies recibidas. dentro de ese array:

var x = document.cookie.split(';')
x[0]="cookie1=valor1"
x[1]="cookie2=valor2"

y con otro split del signo igual (=) separamos el identificador de cookie de su correspondiente valor:

var y = x.split('=')
y[0]="cookie1" //identificador de cookie
y[1]="valor1" //valor de la cookie

saludos.
  #13 (permalink)  
Antiguo 03/08/2011, 02:48
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 7
Respuesta: Obtener datos desde documento externo

Hola! muchas gracias por tu respuesta, ceSharp! ahora me queda muchísimo más claro. Entiendo cómo funciona. Pero sigo estando igual que al principio... los datos son muy grandes. A lo mejor tengo que introducir textos de 15 o 20 líneas. O puede que incluso más... No existe otra foma de hacer esto?
  #14 (permalink)  
Antiguo 03/08/2011, 03:45
Avatar de ceSharp  
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 495
Antigüedad: 16 años
Puntos: 66
Respuesta: Obtener datos desde documento externo

buenas,

pues ya lo siguiente sería con bases de datos, pasando la información al servidor y almacenando los datos para luego poder recuperarlos, al menos son las únicas maneras que yo conozco de hacerlo.

siento no poder ayudarte más en este sentido.

saludos
  #15 (permalink)  
Antiguo 03/08/2011, 05:28
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 7
Respuesta: Obtener datos desde documento externo

Muchas gracias de todos modos. Te lo has currado
  #16 (permalink)  
Antiguo 05/08/2011, 01:12
 
Fecha de Ingreso: junio-2009
Mensajes: 156
Antigüedad: 15 años, 4 meses
Puntos: 7
Respuesta: Obtener datos desde documento externo

A nadie se le ocurre otra forma de hacerlo?
  #17 (permalink)  
Antiguo 07/08/2011, 07:26
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Obtener datos desde documento externo

buenas,
he estado leyendo el tema y aún no logro entender como las variables han de recibir los valores. de todos modos, se me ocurre que podrias usar json y posiblemente xmlhttprequest. tu escribes un solo documento json con todos los datos. luego lo cargas con xmlhttprequest. en los enlaces, en lugar de pasar todas las variables, solo pasas un valor identificativo que puedas localizar en json. y luego rellenas el documento con los datos de json. por supuesto, todo esto sin necesidad de lenguaje servidor porque me parece que así lo quieres hacer.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: documento, externo, html, js
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 07:46.