【问题标题】:PHP cURL fetching file, use in JavascriptPHP cURL 获取文件,在 Javascript 中使用
【发布时间】:2012-10-14 13:02:56
【问题描述】:

我想写一个小的 php 程序,它通过 cURL 从远程服务器获取 csv 文件。到目前为止它可以工作,现在我想在 JS 中使用这个 csv 文件。

将此文件从 php 传递给 JS 的最佳方法是什么?

在 php 服务器上创建 tmp 文件并在 JS 中使用指向该文件的链接?有没有更聪明的方法?

谢谢

【问题讨论】:

  • 给文件是什么意思?
  • 你说得对,“给予”不是很清楚。我想让 php 获取的信息在 JS 中可用。

标签: php javascript curl


【解决方案1】:

我会使用 AJAX 调用 PHP 文件,然后使用 cURL 来获取 CSV。

如果您选择直接使用 PHP 加载 DOM 中的文件,则在 cURL 操作完成之前不会出现页面。根据经验,我注意到如果一个页面需要 30 秒才能加载,最好显示一个“正在加载...”的页面,而不是显示一个空白页面 29 秒并在最后一秒显示所有内容。

顺便说一句,使用 cURL 和 AJAX 调用也是一种规避同域 AJAX 的方法。

我不建议在 JS 中使用 PHP 代码,因为如果您以后选择这样做,它会消除有效缓存/缩小 JS 的可能性。此外,它并不漂亮。

我会怎么做;

  • 使用 AJAX 调用 PHP 文件
  • 使用 cURL 获取文件
  • 以 JSON 格式输出它的数据,它可能看起来像这样

    "{"1":{"col1":"hey","col2":"hey2"},"2":{"col1":"heyhey","col2":"heyhey2"}}"

  • 在表格中显示数据,可能使用 dataTables 或类似的东西。

【讨论】:

  • 我认为这是最好的解决方案。我仍然不确定 JSON 是否对我来说是最聪明的方式,但这是正确的方向。谢谢
【解决方案2】:

如果保证页面上需要该文件,则最好在页面加载时直接将内容添加到页面中:在隐藏的 DOM 元素中,或者最有可能作为 JavaScript 变量。如果您已经拥有该文件,那么最好的选择可能是将其转换为更接近您期望 JavaScript 处理的形式,很可能是 JSON 结构。可选地,如果它很大,您最好使用逻辑 Javascript 代码来最大限度地减少在客户端完成的额外处理。无论哪种方式,这都将消除对额外请求的需要,并且更重要的是,延迟处理。

如果文件保证会被使用,并且 PHP curl 用作具有未知输入的反向代理之类的东西,那么暴露一个端点并用 AJAX 处理它可能更有意义.如果您使用的是 RDBMS,那么在数据库中的临时表中使用某种形式的 CLOB 字段可能更有意义,但根据您的需要,临时文件或只是内存中的对象也可以使用。

【讨论】:

  • 是的,在任何情况下都需要该文件。该页面的主要功能是编辑元数据以解析 CSV。通过实时视图,我可以向用户展示更改如何影响 csv 解析。问题是 csv 文件可能会变得非常大。我想我会在客户网站上只显示 100 行,这应该足够了。我将使用code.google.com/p/jquery-csv 来编辑数据。代表 csv 文件的最佳字符串是什么?只是一个包含所有数据的 JS 变量?
  • 我会坚持使用与您想要做的事情相匹配的结构。听起来您最好使用至少一个字符串数组,其中每行文本都是数组中的索引。然后,您可以在这些行中使用定界标记之类的东西,这比在二维数组或更丰富的 DOM 元素中混洗数据更容易管理并且可能更高效。
  • 该库看起来也可能不需要它:如果您通过 PHP 进行过滤,那么您应该使用它来完成繁重的工作。
【解决方案3】:

您不需要在服务器上创建临时文件,您可以在 javascript 中使用简单的 php

<script>alert("<?php echo $curlresult;?>")</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多