2011-09-13 74 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