2014-02-26 37 views
0

我創建了一個下拉3個選項 一個 b Ç要加載在JavaScript的

我想加載一個本地文件中的文本下拉選項中選擇文本區域的文本文件除了選擇選項的下拉菜單之外,還在同一頁面上顯示區域。

例如,當我點擊選項a時,應該在文本區域顯示a.txt的內容。

當我點擊選項b時,b.txt的內容應顯示在文本區域。

請幫忙。

+0

這是基本的MVC應用程序功能。 – QuestionMarks

+0

你想動態加載計算機上的文本文件裏面的內容,並把它放在textarea裏面嗎? 你只有客戶端代碼,或者你也有服務器端代碼? –

+0

是的,我想要動態加載文本文件的內容。 – user1862399

回答

0

你不應該這樣做與JavaScript。要訪問文件系統,您需要一些服務器端語言,如C#或PHP。有新的文件系統API,但僅在現代瀏覽器(HTML 5)中受到支持,這會限制您的用戶使用較早版本的協議。

http://www.html5rocks.com/en/tutorials/file/dndfiles/

+0

在MVC結構的應用程序中,它可以使用Java上的JSP非常簡單地完成。 – QuestionMarks

+0

謝謝..但我只想使用JavaScript。 – user1862399

0

您需要使用HTML5文件系統API讀取本地文件。

示例代碼:如果你想這樣做對本地文件系統中的瀏覽器

function readSingleFile(evt) { 
    //Retrieve the first (and only!) File from the FileList object 
    var f = evt.target.files[0]; 

    if (f) { 
     var r = new FileReader(); 
     r.onload = function(e) { 
      var contents = e.target.result; 
     alert("Got the file.n" 
       +"name: " + f.name + "n" 
       +"type: " + f.type + "n" 
       +"size: " + f.size + " bytesn" 
       + "starts with: " + contents.substr(1, contents.indexOf("n")) 
     ); 
     } 
     r.readAsText(f); 
    } else { 
     alert("Failed to load file"); 
    } 
    } 

    document.getElementById('fileinput').addEventListener('change', readSingleFile, false); 

更多詳細信息,可瀏覽這裏http://www.html5rocks.com/en/tutorials/file/filesystem/

http://www.htmlgoodies.com/beyond/javascript/read-text-files-using-the-javascript-filereader.html#fbid=EF1E1e1JJgF

+0

HTML5文件系統API只能在Chrome和Opera中使用,並且如果不用於特定用例,則會出現一些相當不好的安全漏洞。接近這個的經過時間考驗的方法是在MVC結構化應用程序中的JSP上使用Java。 – QuestionMarks

0

,如果你想(假設腳本是在.PHP文件)

你可以在你的腳本中使用PHP
<?php 
    function readTextFile($file) { 
     $myfile = fopen($file, "r") or die("Unable to open file!"); 
     return str_replace("'", '"', fread($myfile, filesize($file))); 
     fclose($myfile); 
    }; 
?> 

var optionsObject = { 
    a: '<?=readTextFile('/path/to/a.txt') ?>', 
    b: '<?=readTextFile('/path/to/b.txt') ?>', 
    c: '<?=readTextFile('/path/to/c.txt') ?>' 
}; 
var optionsArray = [ 
    '<?=readTextFile('/path/to/a.txt') ?>', 
    '<?=readTextFile('/path/to/b.txt') ?>', 
    '<?=readTextFile('/path/to/c.txt') ?>' 
]; 

第一個JS變量(optionsObject)是一個對象。要從此變量中獲取文本文件,請使用optionsObject.{abc}(將{abc}替換爲a,bc)。

第二個JS變量(optionsArray)是一個數組。要從此變量中獲取文本文件,請使用optionsArray[{0-2}](用0,12替換{0-2})。

您也可以使用JavaScript的Ajax,但是您使用的是.txt文件,因此您必須添加一些額外的代碼,因爲大多數瀏覽器都緩存文本文件並且不想重新讀取它們。 PHP將會重新讀取它們,並且不會像瀏覽器那樣緩存文本文件。