web-dev-qa-db-fra.com

Javascript lit le HTML de l'URL en chaîne

Je suis en train de construire un site qui devrait pouvoir fonctionner comme un navigateur FTP. Fondamentalement, ce que j'ai est un serveur FTP avec des images.

Ce que je ne peux pas comprendre, c’est que si je navigue sur ce site ftp, je peux voir la source de ce site (comme dans certains navigateurs). ).

La raison en est que je vais créer une sorte de navigateur "image". Je compte y parvenir en lisant le source dans une chaîne, puis en copiant toutes les sources d’image et en utilisant innerHTML pour créer une nouvelle présentation.

En bref: je veux lire les informations d'une URL et les afficher d'une manière différente.


Eh bien, n'arrive pas à le faire fonctionner. Le problème peut être que je ne peux pas utiliser les scripts côté serveur. Serait-il possible cependant de mettre un fichier sur le serveur FTP que je peux charger et qui puisse charger dynamiquement les données dans le même dossier? (quand je parle de FTP, je parle d’un serveur NAS avec accès FTP).

20
Chizpa

Votre réponse est Ajax. Il peut POST et obtenir des données à partir d'une URL, tout comme pour la navigation sur un site Web, et renvoie le code HTML sous forme de chaîne.

Si vous prévoyez d’utiliser jQuery (très pratique), vous pourrez facilement utiliser Ajax . Comme cet exemple (ne fonctionne pas sans la bibliothèque):

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

Si vous voulez utiliser le Javascript par défaut, regardez 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();
31
Niels

Il n'y a pas grand chose à ajouter à ce que Niels et rich.okelly ont dit. AJAX est votre chemin à parcourir.

Gardez cependant à l'esprit que les restrictions interdomaines vous empêcheront d'accéder aux données qui ne sont pas dans le même domaine. Vous trouverez une solution de contournement ici.

1
vzwick

Comme indiqué précédemment, les réponses sont possibles avec HTTP et CORS, mais je pense que vous souhaitez jeter un œil à cet autre fil .

1
Diogo Biazus

EN Javascript pour obtenir des données sans utiliser alert ():

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