2011-09-13 72 views
3

我有一個名爲profiles.txt與信息的格式如下可變長度的外部文本文件:使用JavaScript來輸出以下HTML讀取外部文件的JavaScript

Jason/Red/Tyrannosaurus 
Zack/Black/Mastodon 
Billy/Blue/Triceratops 
Trini/Yellow/Griffin 
(etc) 

我如何可以通過讀取文件:

Name: Jason<br> 
Color: Red<br> 
Avatar: Tyrannosaurus<br> 
<br> 
Name: Zack<br> 
Color: Black<br> 
Avatar: Mastodon<br> 
<br> 
(etc) 
+0

JavaScript在哪裏運行?從瀏覽器? –

+0

javascript在瀏覽器上,外部文件是與.html和javascript文件位於相同域的.txt文件 –

回答

4

下面是一個使用XMLHttpRequest一個例子:

var xmlhttp; 
xmlhttp=new XMLHttpRequest(); 
xmlhttp.open('GET', "test.txt", false); 
xmlhttp.send(); 
document.write(xmlhttp.responseText.split('\r\n').map(function (i) {return i.replace(/(.+),(.+),(.+)/g, 'Name: $1<br>Color: $2<br>Avatar: $3<br>')}).join('<br/>')); 

Array.map需求是墊片在IE8及以下。此外,IE使用new ActiveXObject("Msxml2.XMLHTTP") 這是一個非常瘦身的例子。我使用asyc false這是不好的,document.write是不好的。但我只是想演示獲取文件並解析輸入。

+0

此代碼可用於獲取*服務器*上的文本文件的內容。有效的代碼,是的,但我不相信OP正在使用的文件位於服務器上 - 問題中的「外部」一詞使我得出這個結論。 –

+0

@克里斯,你認真嗎?外部在哪裏?如果它不在服務器上,它在哪裏?我想,我要說的是,如果你不知道OP究竟想要什麼,爲什麼要低估我。這很冷 – Joe

+0

謝謝,文件在服務器上 –

4

僅適用如果該文件是不是已經在服務器(在問題未指定)

沒有將文件發佈到服務器或將文件內容粘貼到文本框中,目前沒有辦法讓javascript直接與文件系統交互。

也出於安全原因,javascript本身不能查看使用文件類型輸入選擇的文件的內容。

所以,你的選擇是:

  • 文件上傳到使用AJAX風格的成形後的服務器,返回的內容(jQuery plugin for AJAX file uploads
  • 通過正常的形式回發提交的文件,頁面時重新加載你可以將內容傳遞給JavaScript,並將JSON寫入輸出
  • 將數據複製/粘貼到textarea中,使用onKeyUp事件檢測數據的輸入(或添加「Process」按鈕)以讀取textarea內容並從那裏出發(sample
-2
var fileRead = "Jason,Red,Tyrannosaurus\nZack,Black,Mastodon\nBilly,Blue,Triceratops\nTrini,Yellow,Griffin"; 
var lines = fileRead.split("\n"); 

for (var i in lines){ 
    var pdata = lines[i].split(","); 
    jQuery("#ResultDiv").append("Name: " + pdata[0] + "<br/>Color: " + pdata[1] + "<br/>Avatar: " + pdata[2] + "<br/><br/>"); 
} 
0

爲安全起見,javascript中沒有文件I/O。你最好的選擇是在你的服務器代碼中公開這個文本文件,並從javascript中調用它來執行javascript