我想用Javascript循环阅读$ _FILES

时间:2013-12-04 00:41:43

标签: javascript php

以下是我的Javascript功能的一部分:

  var x=document.getElementById('DigitalFiles').rows[R].cells;
  x[0].innerHTML=   $_FILES['files']['name'][1]  <<<<  this $_FILES is not working !

请使用什么语法。

3 个答案:

答案 0 :(得分:1)

看起来你混淆了PHP和PHP,反之亦然。

要将x[0].innerHTML设置为所需的值,您可以使用:

x[0].innerHTML=<?php echo $_FILES['files']['name'][1]; ?>;

或者,如果您已经在PHP中直接生成javascript代码:

<?php
    echo 'x[0].innerHTML="'.addslashes($_FILES['files']['name'][1]).'"';
?>

<强>一般

你不能在javascript中循环访问PHP数组 - 除非你首先使它的内容可用于javascript:

<script type="text/javascript">
    var _arrayFromPhp=[<?php
        implode(',', $_arrayInPhp);
    ?>];
</script>

这通常会起作用,因此您可以在javascript环境中使用_arrayFromPhp。这个相当抽象的例子还假设$_arrayInPhp是一个只有一个级别的数组。

但是,在$ _FILES的特定情况下,这没有多大意义,因为PHP使用客户端上载的文件填充$ _FILES数组。我想不出任何有目的的方法来处理javascript中$ _FILES的内容。

无论如何你想要使用它,你可以这样做:

<script type="text/javascript">
    var _arrayFromPhp=<?php
       json_encode($_FILES);
    ?>;
</script>

之后_arrayFromPhp将在javascript中包含$_FILES的表示。

注意

如果您想以某种方式使用以前在javascript环境中上传的文件,您应首先使用PHP本身处理上传($_FILES开始播放),然后应用上述解决方案之类的内容来获取您的信息从PHP进入你的javascript环境。

另请注意,如果通过上传过程直接调用脚本,$_FILES将只包含任何内容。如果您上传文件然后重新加载页面(例如),则$_FILES将为空。

<强>提示

如果您使用的是传统的上传表单,请确保您的表单设置为正确的编码类型(通过设置属性 enctype ):

<form method="post" enctype="multipart/form-data">
</form>

答案 1 :(得分:0)

$ _FILES变量特定于PHP而不是JS。如果你想使用JS,你将有一些限制要处理。您可以在此链接http://www.html5rocks.com/en/features/file_access

查看一些HTML5文件处理

答案 2 :(得分:0)

我只想扩展PHPJavascript之间的区别(在此上下文中)。

这是一个简化的流程;

客户(您或他人的浏览器)在myURL.com上请求该网站。此请求会命中您的服务器(例如LAMP堆栈)并Apache将此请求路由到正确的位置,并在您的服务器上执行PHP,这将生成HTML。但实际上,这个“HTML”只是一个简单的字符串。 PHP不知道HTML是什么,或者它是什么,当你从PHP回显或打印等HTML时,PHP只是把它想象成一个字符串。

PHP能够与database(LAMP中的MySQL中的M - 在这个假想的情况下)以及一些服务器变量($_SERVER和{进行交互{1}})。所有$_POST/GET执行并创建HTML后,它会将此HTML作为简单字符串发送到客户端浏览器。

浏览器获取此字符串,然后开始将其解释为HTML。它会读取HTML并开始下载您的资源,如javascript文件,PHP文件,图像等,并开始将所有这些结合在一起。因此,您的javascript文件将被读取并执行,并且CSS开始为HTML设置样式。 Javascript可以继续在客户端上运行,也可以通过某些事件(点击,计时,滚动等)触发运行某些功能。

如您所见,客户端无法运行PHP。所有PHP都在服务器上运行,并返回一个字符串。所有客户端都是简单地执行Javascript。

现在,随着事情变得更加先进,您可以开始使用CSS。 AJAX是一种技术组合(异步JavaScript和XML),用于向服务器发出请求,而无需重新加载或将客户端重定向到新页面。这意味着您可以让您的客户在myURL.com并向myURL.com/myAJAXHandler.php发出AJAX请求。客户端留在myURL.com,但服务器基本上看到客户端试图访问浏览器中的myURL.com/myAJAXHandler.php页面。服务器正常运行,运行该地址的PHP,并再次向客户端返回一个简单的字符串。使用Javascript的客户端获取此字符串并可以使用它执行所需的操作,通常更新当前页面(仍为myURL.com)或任何数量的内容。

这是一个简化的解释,我已经留下了很多东西并且已经概括了很多,但我只是想让你大致了解会发生什么。

希望这有帮助。