Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Apache到Javascript提供文件服务_Javascript_Node.js_Ajax_Apache_Web Services - Fatal编程技术网

从Apache到Javascript提供文件服务

从Apache到Javascript提供文件服务,javascript,node.js,ajax,apache,web-services,Javascript,Node.js,Ajax,Apache,Web Services,我正在用Javascript和WebGL编写我的第一个web应用程序。目前,我正在Apache的localhost上运行该应用程序。应用程序需要处理即时提供的数据。到目前为止,我一直在处理运行时发生的AJAX调用,这些调用不再适用于我的目的。因此,我希望应用程序在初始化时将所有文件从服务器端加载到客户端,而不是在请求时将单个文件从服务器发送到客户端。我希望在启动时自动加载,这样就不必将每个新文件作为url添加到html索引中。我知道我应该通过服务器端脚本来实现这一点;可能是PHP,因为我有一个A

我正在用Javascript和WebGL编写我的第一个web应用程序。目前,我正在Apache的localhost上运行该应用程序。应用程序需要处理即时提供的数据。到目前为止,我一直在处理运行时发生的AJAX调用,这些调用不再适用于我的目的。因此,我希望应用程序在初始化时将所有文件从服务器端加载到客户端,而不是在请求时将单个文件从服务器发送到客户端。我希望在启动时自动加载,这样就不必将每个新文件作为url添加到html索引中。我知道我应该通过服务器端脚本来实现这一点;可能是PHP,因为我有一个ApacheLocalHost?我有不同的文件夹,它们以统一的dataformat.txt、.png和.json格式保存我所需的资源。所以我想做的是,在Javascript应用程序启动之前,查看文件夹并为每个文件夹发送一个对象,该文件夹将文件名作为绑定到filedata的键。我的直觉是否正确,我需要用PHP实现这一点?如果是,那么当我首先开始使用php提供文件,然后启动javascript应用程序时,我从哪里开始告诉我的应用程序该做什么?如何在本地主机上执行此操作?我现在是否应该考虑扩展我的工具集,例如在服务器端本地使用nodeJS?如果是这样的话,你会为这类工作推荐什么轻量级工具?我觉得我在这里遗漏了一些设计原则

编辑:
请记住,我不想专门调用单个文件。。。我已经在做了。我需要的是一个脚本,在实际应用程序的程序逻辑启动之前,在应用程序的初始时间自动将服务器上某个文件夹的所有文件提供给客户端。

您的问题有点广泛,所以我会尽最大努力。为什么AJAX不适用于实时数据,但一次加载所有文件就可以了?如果您使用的是实时数据,为什么不查看websocket或AJAX查询呢

如果要将数据从服务器传递到客户端,则无论发生什么情况,都需要使用HTTP请求。客户端需要GET请求或POST请求才能从服务器请求数据并将其作为响应接收

从理论上讲,您可以直接将数据从PHP传递到应用程序的视图,这在技术上是通过GET请求完成的,只要用户从服务器请求.PHP文件之类的数据,但这并不像Javascript能够访问数据那样灵活。您可以使用一些.value方法进行一些黑客攻击,并将数据从视图“传输”到Javascript,但这并不理想,而且可能会出现一些安全漏洞。这也意味着数据只传递一次

因此,需要做的是,数据需要在初始化时进行处理,然后使用Javascript和HTTP请求立即传输到客户端

因此,如果您希望Javascript能够访问数据并在变量中使用它或进一步操作它,那么您需要使用HTTP请求,例如Javascript调用的GET或POST。否则,您需要在通过PHP初始化时立即将数据传递给视图,但这意味着您无法处理实时数据,因为数据只在页面刷新时传递一次

scandir的示例:

可以使用以下方法之一使用PHP关联数组创建:

//assuming $arrayOne is already assigned from reading a file and storing its contents within $arrayOne
$data['dataOne'] = $arrayOne;
// or
array_push($data['dataTwo'], $arrayTwo);
// or
array_push($data, [
   'dataThree'  => ['Mary', 'Joe', 'Pam', 'Eric']
]);

然后可以简单地将$data传回,这是一个包含所有不同数据集的数组,如果每个数据集都需要不同的话。

我想你的建议已经是我现在用我的应用程序所做的了。但是,我还没有找到任何关于如何通过HTTP请求在服务器上获取整个文件夹内容的信息。。我现在使用的方法请求我请求的文件的特定路径。这对我现在不起作用,因为我需要的文件在应用程序中相互依赖,所以AJAX的异步管道会与我的程序逻辑崩溃。我的想法是在任何程序逻辑发生之前将所有数据加载到客户端,并将其缓冲到html context.Ok中的对象中。我想这更清楚一点。你研究过PHP上的scandir吗?您可以向服务器上的文件发出AJAX请求,然后服务器将使用scandir“/path/to/directory”检索该目录下所有文件的文件名。然后,这个文件名数组上的foreach循环将打开每个文件,您可以将每个文件中的数据拉入一个单独的数组,以便进一步操作。这将随着您向该目录添加更多文件而扩展,因此您不必不断向代码中添加新文件名。这个数组也可以向下过滤,这是什么样的数据?如果文件相互依赖,那么关系数据库可能非常适合您。通常,原始数据只是简单的原始数据,不需要像财务数据那样使用任何其他数据。如果数据依赖于要正确解释的其他数据文件
实际上,像MySQL这样的关系数据库可能有助于降低将文件链接在一起或正确读取文件所需的复杂性。。。例如,一个.txt文件用于构建着色器程序。然后,该着色器程序与.JSON文件一起用于构建网格进行渲染。嗯,我想我的解决方案是在JS脚本中有一个自动执行的匿名函数,该函数向服务器执行GET请求,该请求将在加载窗口时自动运行。此请求可以从.txt文件中检索数据,并将其作为JSON对象传回,JSON对象的所有初始设置都作为JSON对象的属性。然后JS可以使用数据来构建着色器,并按顺序使用它,以维护依赖链。恐怕我对WebGL及其整个流程不太熟悉,所以除了一般性建议外,我不能提供太多的建议。
{
    'dataOne': [0,1,2,3,4,5,6...],
    'dataTwo': ['new', 'burger', 'milkshake'],
    'dataThree': ['Mary', 'Joe', 'Pam', 'Eric']
}
//assuming $arrayOne is already assigned from reading a file and storing its contents within $arrayOne
$data['dataOne'] = $arrayOne;
// or
array_push($data['dataTwo'], $arrayTwo);
// or
array_push($data, [
   'dataThree'  => ['Mary', 'Joe', 'Pam', 'Eric']
]);