Javascript lee html de url en cadena

3 minutos de lectura

Javascript lee html de url en cadena
Chizpa

Actualmente estoy construyendo un sitio que debería poder funcionar como una especie de navegador ftp. Básicamente, lo que tengo es un servidor ftp con algunas imágenes.

Lo que no puedo entender es: si navego a este sitio ftp, puedo ver la fuente del sitio ftp (como se ve en algún navegador), lo que necesito es guardar esa fuente de alguna manera en una cadena (usando javascript ).

La razón es que haré una especie de navegador de ‘imágenes’. Planeo lograr eso leyendo la fuente en una cadena, luego copio todas las fuentes de imágenes y uso innerHTML para crear un nuevo diseño.

En resumen: quiero leer información de una url y mostrarla de una manera diferente.


Bueno, parece que no puede hacerlo funcionar. El problema podría ser que no puedo usar secuencias de comandos del lado del servidor. Sin embargo, ¿sería posible colocar un archivo en el servidor ftp que pueda cargar y que pueda cargar dinámicamente los datos en la misma carpeta? (cuando digo FTP me refiero a un servidor NAS con acceso FTP).

  • ¿Está utilizando algún tipo de marco? ¿Es decir, jQuery?

    – vzwick

    19 de noviembre de 2011 a las 22:12

  • “si navego a este sitio ftp, puedo ver la fuente del sitio ftp”: lo que ve es algo de HTML generado por el navegador basado en la lista del directorio, no ve lo que envía el sitio en sí.

    – Quintín

    20 de noviembre de 2011 a las 8:45

Javascript lee html de url en cadena
niels

Tu respuesta es Ajax. Puede ENVIAR y OBTENER datos de una URL, al igual que navegar por un sitio web, y devolverá el HTML como una cadena.

Si planeas usar jQuery (realmente práctico), es fácil de usar Ajax. Como este ejemplo (no funciona sin la biblioteca):

$.ajax({
    url : "/mysite/file.html",
    success : function(result){
        alert(result);
    }
});

Si desea utilizar Javascript predeterminado, eche un vistazo a http://www.w3schools.com/ajax/default.asp

var xmlhttp;
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
}
else { // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        document.getElementById("myDiv").innerHTML = xmlhttp.responseText;
    }
}
xmlhttp.open("GET", "ajax_info.txt", true);
xmlhttp.send();

  • Bueno, la solución que se me ocurrió es escribir una pequeña aplicación en C#. Cuando ejecuta la aplicación, ingresa a la carpeta NAS, busca imágenes y genera un archivo html (que contiene las imágenes), luego mi aplicación puede usar esa página html en un iframe.

    – Chizpa

    20 de noviembre de 2011 a las 20:45

EN Javascript para obtener datos sin usar alert() :

    $.ajax({
    url : "/mysite/file.html",
    async:false,            //this is the trick
    success : function(result){
                 //does any action
               } 
    });

1647560229 987 Javascript lee html de url en cadena
vzwick

No hay mucho que añadir a lo que han dicho Niels y rich.okelly. AJAX es tu camino a seguir.

Sin embargo, tenga en cuenta que las restricciones entre dominios le prohibirán acceder a datos que no estén en el mismo dominio. Encontrará una posible solución aquí.

1647560230 450 Javascript lee html de url en cadena
qwr

Basado en promesas modernas Obtener API solución (no más XMLHttpRequest o jQuery.ajax()):

fetch('data.txt')
  .then(response => response.text())
  .then(data => console.log(data));

Ejemplo usando async/await:

async function myFetch() {
  let response = await fetch('data.txt');

  if (!response.ok) {
    throw new Error(`HTTP error! status: ${response.status}`);
  }

  let text = await response.text(); // await ensures variable has fulfilled Promise
  console.log(text);
}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad