2017-06-16 151 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