3

我什至不知道我的项目是否可行。在环顾了几个小时并阅读了其他 Stack Overflow 问题之后,我的希望正在慢慢减少,但这不会阻止我提出问题!

我的项目:为我的上级创建一个简单的 HTML 表格,对我们的销售团队电话活动进行分类。目前我需要一些东西来从文件中提取数据值并在表中使用这些值。

我的问题:Javascript甚至可以做到这一点吗?我知道它在客户端计算机上读取 cookie,但它可以读取与网页相同目录中的文件吗?(如果网页在公司服务器上?)

我的进步:当我找到更多信息时,我会更新。

更新:你们中的许多人对文件的存储方式感到好奇。它是table.html我们文件服务器上的静态网页 ( )。文本文件 ( data.txt) 将位于同一目录中。

4

6 回答 6

1

我最近完成了一个项目,我几乎和你自己一样(唯一的区别是用户专门使用 IE)。

我最终使用了 JQuery 的$.ajax()函数,并从 XML 文件中提取数据。

此解决方案确实需要使用 Microsoft Access 或 Excel。我早在 2003 版本就使用过,但后来的版本工作得很好。

我的数据保存在 Access 的一个表中(在 Excel 上我使用了一个列表)。在 Access 中创建表后;老实说,它就像点击“导出”一样简单,保存为 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>")  
            });
        }
    });
});
于 2013-08-12T17:44:00.503 回答
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

于 2013-08-12T17:25:26.790 回答
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);
});
于 2013-08-12T17:26:10.550 回答
0

如果您有像使用 Node.js、PHP 等构建的服务器,这可能会起作用。

JavaScript 可以使用 Ajax 协议读取文件,但这意味着您需要一个服务器。

否则,您的请求将通过不支持 Ajax 的 file:// 协议。

于 2013-08-12T17:17:05.227 回答
0

由于安全原因,JavaScript 无法自动读取文件。

你有两个选择:

  • 如果你可以依赖 IE,你可以使用一些花哨的 ActiveX 东西。

  • 使用一个后端,它要么不断地将数据推送到 JS 客户端,要么在拉取请求中提供数据。

于 2013-08-12T17:16:18.143 回答
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

我从来没有亲自让它正常工作,但它应该能够允许这种事情。

于 2013-08-12T17:18:39.080 回答