从上传的CSV文件中将数据返回到javascript的最佳方法是什么?

时间:2011-12-08 18:03:42

标签: php javascript csv

该方案需要像这样运行:客户端上传CSV文件,然后使用上传的CSV文件中的数据动态填充表格。

我可以用简单的表格上传CSV文件。没问题。 我可以在服务器端使用PHP解析数据。没问题。 我可以用PHP服务器端创建一个数组。没问题。

我该怎么回到JavaScript进行处理呢?我以为我可以AJAX它,但我会在哪里指出请求?

我想过用PHP来递归调用页面,但是它失去了异步性,这是不行的。

似乎我在这里缺少一些简单的东西。

TIA求助。

WR!

2 个答案:

答案 0 :(得分:3)

答案很简单。异步上传文档,让上传调用返回一些JSON。

或者(对于较大的文档更好),上传文档并让服务器返回一个ID,然后使用带有该ID的AJAX调用脚本。这样,您可以对大文件进行后台处理,并在准备好后返回数据,或者返回某种等待状态,客户端等待5秒左右再次尝试。

答案 1 :(得分:0)

如果您想沿着Ajax路线走下去,您应该创建一个专门用于获取CSV数据并将其作为json对象返回的页面(或路径)。让我们说你只需要知道生成数据的id,就可以创建查找$ _POST ['id']的csvdata.php,获取该id的数据,然后返回json_encode(csvArray)数据。您可能希望设置mime类型header('Content-type: application/json');这与提供文件的脚本没有什么不同。您需要知道的是请求的内容以及请求发送的数据。如果您需要页面上的CSV数据,则需要呈现一个脚本,该脚本知道要与请求一起发送的数据。您的模板引擎应该能够为您呈现小动态脚本。原则上,您希望生成类似

的脚本
...
<body>
...
<script type="text/javascript">
    (function () {
        var csvid = 1;
        // Make ajax post to csvid.php with csvid as id
    }());         
</script>
</body>

您将生成这样的脚本,其中csvid值是动态设置的(使用您选择的方法生成html / js)。始终使用POST来检索Ajax数据,尤其是在数据敏感且需要会话身份验证的情况下。在这种情况下,GET将对json数组漏洞开放。

或者,您可以简单地在不使用Ajax的情况下内联呈现数组。因此,您可以只使用在其中编码的数组来呈现脚本,而不是创建ajax请求变量。

模板:

<script type="text/javascript">
    (function () {
        var data = {jsondata};
        someNameSpace.someProcessingFunction(data);
    }());
</script>

用json_encode(csvarray)替换{jsondata};