Javascript从url读取html到字符串

时间:2011-11-19 22:06:05

标签: javascript html variables ftp

我目前正在构建一个应该能够用作ftp类浏览器的网站。基本上我所拥有的是一个带有一些图像的ftp服务器。

我无法弄清楚的是:如果我浏览到这个ftp站点,我可以查看ftp站点的源代码(如某些浏览器中所示),我需要的是以某种方式将该源保存到字符串(使用javascript)。

原因是,我会制作一种“图像”浏览器。我计划通过将源读入字符串来完成它,然后复制所有图像源并使用innerHTML创建新的布局。

简而言之:我想从网址中读取信息并以不同的方式显示。


好吧,似乎无法让它发挥作用。问题可能是我无法使用服务器端脚本。是否有可能将文件放在我可以加载的ftp服务器上,可以动态加载同一文件夹中的数据? (当我说FTP时,我实际上是指具有FTP访问权限的NAS服务器。)

5 个答案:

答案 0 :(得分:31)

你的回答是Ajax。它可以从URL发布和获取数据,就像浏览网站一样,它会将HTML作为字符串返回。

如果您打算使用jQuery(非常方便),则可以轻松使用Ajax。像这个例子(没有库时不起作用):

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

如果您想使用默认的Javascript,请查看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();

答案 1 :(得分:1)

Niels和rich.okelly所说的内容并不多。 AJAX是您的最佳选择。

请注意,跨域限制将禁止您访问数据that is not in the same domain. You'll find a possible workaround here.

答案 2 :(得分:1)

由于前面的答案可以使用HTTP和CORS,但我想你想看看this other thread

答案 3 :(得分:1)

现代基于 Promise 的 Fetch API 解决方案(不再是 XMLHttpRequest 或 jQuery.ajax()):

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

使用 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);
}

答案 4 :(得分:0)

在Javascript中获取数据而不使用alert():

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