我甚至不知道我的项目是否可行。在环顾了几个小时并阅读其他Stack Overflow问题后,我的希望正在慢慢减少,但它不会阻止我提出要求!
我的项目:创建一个简单的HTML表格,为我的上司分类我们的销售团队电话活动。目前我需要从文件中提取数据值并在表中使用这些值。
我的问题:Javascript甚至可以这样做吗?我知道它在客户端计算机上读取cookie,但是它能读取与网页相同的目录中的文件吗? (如果网页在公司服务器上?)
我的进度:我会在找到更多信息时进行更新。
更新:你们中的许多人都对如何存储文件感到好奇。它是我们文件服务器上的静态网页(table.html
)。文本文件(data.txt
)将位于同一目录中。
答案 0 :(得分:1)
我最近完成了一个项目,其中我几乎拥有与您自己相同的条件(唯一的区别是用户专门使用IE)。
我最终使用了JQuery的$.ajax()
函数,并从XML文件中提取数据。
此解决方案需要使用Microsoft Access或Excel。我早在2003版本就使用过,但后来的版本工作得很好。
我的数据保存在Access的表格中(在Excel上我使用了一个列表)。在Access中创建表后;它实际上就像点击'Export'一样简单,保存为XML然后使用'ajax()'函数(http://api.jquery.com/jQuery.ajax/)来操作你想要输出的数据,然后是CSS / HTML页面布局。
我建议使用Access,因为以正确的方式导出XML的麻烦较少,尽管Excel可以更好地修改它。
以下是ms-access的步骤:
在访问权限中创建表格&以XML格式导出
生成的XML将如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Calls.xsd" generated="2013-08-12T19:35:13">
<Calls>
<CallID>1</CallID>
<Advisor>Jenna</Advisor>
<AHT>125</AHT>
<Wrap>13</Wrap>
<Idle>6</Idle>
</Calls>
<Calls>
<CallID>3</CallID>
<Advisor>Edward</Advisor>
<AHT>90</AHT>
<Wrap>2</Wrap>
<Idle>4</Idle>
</Calls>
<Calls>
<CallID>2</CallID>
<Advisor>Matt</Advisor>
<AHT>246</AHT>
<Wrap>11</Wrap>
<Idle>5</Idle>
</Calls>
示例HTML
<table id="doclib">
<tr><th>Name</th><th>AHT</th><th>Wrap</th><th>Idle</th></tr>
</table>
<强> jQuery的:强>
$(document).ready(function(){
$.ajax({
type: "GET",
url: "Calls.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('Calls').each(function(){
var advisor = $(this).find('Advisor').text(),
aht = $(this).find('AHT').text(),
wrap = $(this).find('Wrap').text(),
idle = $(this).find('Idle').text(),
td = "<td>",
tdc = "</td>";
$('#doclib').append("<tr>" +
td + advisor + tdc + td + aht + tdc + td + wrap + tdc + td + idle + tdc + "</tr>")
});
}
});
});
答案 1 :(得分:0)
由于安全原因,JavaScript无法自动读取文件。
您有两种选择:
如果你可以依赖IE使用,你可以使用一些花哨的ActiveX东西。
使用后端,该后端可以不断地将数据推送到JS客户端或提供有关拉取请求的数据。
答案 2 :(得分:0)
如果您使用Node.js,PHP等构建服务器,这可能会有效。
JavaScript可以使用Ajax协议读取文件,但这意味着您需要服务器。
否则您的请求将通过不支持Ajax的file://协议。
答案 3 :(得分:0)
您可以尝试查看FileReader: https://developer.mozilla.org/en-US/docs/Web/API/FileReader
The FileReader object lets web applications asynchronously read the contents of files (or raw data buffers) stored on the user's computer
我从来没有亲自让它正常工作,但它应该能够允许这种事情。
答案 4 :(得分:0)
在IE 5或IE 6中尝试使用XMLHttpRequest或ActiveXObject。
您可以在这里找到解释:
http://www.w3schools.com/xml/xml_http.asp
或者试试这个例子:
http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first
答案 5 :(得分:0)
听起来你只想从服务器获取静态文件的内容;是对的吗?如果这就是你需要做的事情,那你很幸运。这很容易。
load('textTable.txt', function(err, text) {
buildTable(text);
});
function load(url, callback) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState < 4) return;
if (xhr.status !== 200) {
return callback('HTTP Status ' + xhr.status);
}
if (xhr.readyState === 4) {
callback(null, xhr.responseText);
}
};
xhr.open('GET', url, true);
xhr.send('');
}
如果你选择qwest,它看起来像这样:
qwest.get('textTable.txt').success(function(text) {
buildTable(text);
});
使用jQuery:
jQuery.get('textTable.txt', function(text) {
buildTable(text);
});