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

Php 从上传的CSV文件返回数据到javascript的最佳方式是什么?,php,javascript,csv,Php,Javascript,Csv,该场景需要这样运行:客户端上载CSV文件,然后用上载的CSV文件中的数据动态填充一个表 我可以用一个简单的表单上传CSV文件。没问题。 我可以在服务器端用PHP解析数据。没问题。 我可以用PHP服务器端创建一个数组。没问题 我他妈的怎么把它带回JavaScript进行处理?我想我可以用AJAX实现它,但是我应该把请求指向哪里呢 我曾考虑过使用PHP递归调用页面,但后来它失去了异步性,这是不好的 我好像错过了一些简单的东西 谢谢你的帮助 哦 答案很简单。异步上传文档,并让上传调用返回一些JSON

该场景需要这样运行:客户端上载CSV文件,然后用上载的CSV文件中的数据动态填充一个表

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

我他妈的怎么把它带回JavaScript进行处理?我想我可以用AJAX实现它,但是我应该把请求指向哪里呢

我曾考虑过使用PHP递归调用页面,但后来它失去了异步性,这是不好的

我好像错过了一些简单的东西

谢谢你的帮助


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


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

如果您想使用Ajax路径,应该创建一个专门设计用于获取CSV数据并将其作为json对象返回的页面(或路径)。假设您只需要知道生成数据的id,就可以创建csvdata.php来查找$\u POST['id'],获取该id的数据,并返回
json\u encode(csvArray)
data。您可能需要设置mime类型
头('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>
。。。
...
(功能(){
var-csvid=1;
//使用csvid作为id将ajax发布到csvid.php
}());         
您可以生成这样一个脚本,其中csvid值是动态设置的(使用您选择的生成html/js的方法)。始终使用POST检索Ajax数据,尤其是当数据敏感且需要会话身份验证时。在这种情况下,GET将对json数组漏洞开放

或者,您可以简单地在不使用Ajax的情况下以内联方式呈现阵列。因此,不必创建ajax请求变量,只需呈现一个包含编码数组的脚本即可

模板:

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

(功能(){
var data={jsondata};
someNameSpace.someProcessingFunction(数据);
}());

用json_encode(csvarray)替换{jsondata}

哦,看!我涉入深水,从水下悬崖上摔了下来!我不知道JS可以上传文件到服务器上,我以为那是PHP的领域。哎呀。你是说我放弃了PHP对文件和数据的处理?我对JSON部分略知一二。身份证。。。?那是关于什么的?我在那里完全迷路了。不管怎样,你的回答让我得到了正确的定位。对于其他正在寻找答案的人:请按照教程进行操作。我怀疑@Brad建议我这么做。我还没有承诺使用模板系统。我唯一知道的是Smarty,我还没有跳进那个游泳池。我不想说,但我读了这些词,它们就在我的脑海里无法凝结。至于使用JSON,这可能是我要走的路线。谢谢