2017-06-16 196 views
0

我已经做了一个功能,将您带到一个随机链接,但我现在有很多链接,并想知道如何让JavaScript读取一个包含所有链接的文本文件。无法让JavaScript加载.txt文件,加载链接

我现在有的代码不起作用,我尝试了其他类似的方法,但没有任何工作。

<script> 
     var sites = [ 
      function readTextFile("file:///Nicklas Behrend/Desktop/links.txt"); 
      { 
       var rawFile = new XMLHttpRequest(); 
       rawFile.open("GET", file, false); 
       rawFile.onreadystatechange = function() 
       { 
        if(rawFile.readyState === 4) 
        { 
         if(rawFile.status === 200 || rawFile.status == 0) 
         { 
          var allText = rawFile.responseText; 
          alert(allText); 
         } 
        } 
       } 
       rawFile.send(null); 
      } 
     ]; 

     function randomSite() { 
      var i = parseInt(Math.random() * sites.length); 
      location.href = sites[i]; 
     } 
    </script> 
+0

为什么你不只是使这个json文件的链接,然后用ajax调用获取他们 – VivekN

+0

@VivekN他正在做一个AJAX调用来获取它们。文本和JSON文件之间的区别是微不足道的,代码明智的。在这种情况下,文本文件可能更易于使用。 – samanime

+0

@samanime同意。我的不好,应该让他更容易。 – VivekN

回答

1

看起来你有语法错误。它可能应该是这样的:

var sites = []; 
function readTextFile(file, callback) { 
    var rawFile = new XMLHttpRequest(); 
    rawFile.open("GET", file, false); 
    rawFile.onreadystatechange = function() { 
    if(rawFile.readyState === 4) { 
     if(rawFile.status === 200 || rawFile.status == 0) { 
     var allText = rawFile.responseText; 
     alert(allText); 
     callback(allText); 
     } 
    } 
    } 
    rawFile.send(null); 
} 

readTextFile("file:///Nicklas Behrend/Desktop/links.txt", filesText =>{ 
    sites = filesText.split('\n'); 
}); 

function randomSite() { 
    var i = parseInt(Math.random() * sites.length); 
    location.href = sites[i]; 
} 

您试图声明和同时运行该函数,这是错误的。此外,XMLHttpRequest()是异步的,所以你必须有一个回调,它会返回文本。

一旦你有了,你可以将文本分割成一个网站数组(我认为他们在这种情况下是换行符分隔)。

+0

好吧,谢谢,但现在我认为也许我找到了我的文件以错误的方式,或者有我的文档中的链接有问题,因为当我按下按钮它说'404未找到'' – NicklasBehrend

+0

@ NicklasBehrend我几乎保证你的网址是错误的。 'file://协议是基于你的文件结构。/Nicklas Behrend在开始时说你的文件夹应该位于文件系统的根目录下。在Windows上这是不可能的(它必须以像'C:/'这样的驱动器开始),并且在Linux/Mac上会非常奇怪(它必须位于根目录)。如何获得合适的URL可以直接在浏览器中打开目标文件,然后复制它提供的URL。 – samanime