php - 为什么每次都附加数字 0 和 1

标签 php javascript json

我正在尝试附加一个变量 imagename 但不是显示文件名,而是附加数字“0”然后断开然后“1”。我想知道为什么附加这些数字而不是文件名? imagename 变量循环遍历 imageNameArray 变量,该变量包含一个 $_SESSION 变量,该变量检索已上传文件的名称,该 $_SESSION 变量从上传文件的 php 脚本中检索。

下面是发生追加的 javascript 代码:

  function stopImageUpload(success){

var imageNameArray = <?php echo json_encode(isset($_SESSION ['fileImage']) ? $_SESSION ['fileImage'] : null); ?>;
 var result = '';



if (success == 1){
result = '<span class="msg">The file was uploaded successfully!</span><br/><br/>';
for (imagename in imageNameArray)
            {
$('.listImage').append(imageNameArray[imagename]+ '<br/>');

             }

              }
 else {
 result = '<span class="emsg">There was an error during file upload!</span><br/><br/>';
              }

 return true;   
 }

下面是上传文件的 php 脚本,$_SESSION 变量在其中检索文件名:

 <?php

    session_start();

    $result = 0;
    $errors = array ();
    $dirImage = "ImageFiles/";


if (isset ( $_FILES ['fileImage'] ) && $_FILES ["fileImage"] ["error"] == UPLOAD_ERR_OK) {

$fileName = $_FILES ['fileImage'] ['name'];

$fileExt = pathinfo ( $fileName, PATHINFO_EXTENSION );
$fileExt = strtolower ( $fileExt );


$fileDst = $dirImage . DIRECTORY_SEPARATOR . $fileName;

        if (count ( $errors ) == 0) {
            if (move_uploaded_file ( $fileTemp, $fileDst )) {
                $result = 1;


            }
        }

    }

$_SESSION ['fileImage'][] = $_FILES ['fileImage']['name'];

    ?>

<script language="javascript" type="text/javascript">window.top.stopImageUpload(<?php echo $result;?>);</script>

最佳答案

因为您使用的是 for in在数组上循环,imageName将等于数组索引,而不是它的值。很像for (i in window) ,我将在其中列出窗口对象的所有方法和属性。

由于这是一个数组,我强烈建议您使用 for(i=0;i<arr.length;i++)循环类型,因为它更安全......在这两种情况下你都需要更换

$('.listImage').append(imagename + '<br/>');

$('.listImage').append(imageNameArray[imagename]+ '<br/>');

编辑

for loop 可能对你不起作用,因为我遗漏了一点,因为我认为它很明显。不幸的是,显而易见的事情很容易被忽视……正如 Greg 向我指出的那样 (thx m8):

$('.listImage').append(imageNameArray[i]+ '<br/>');

如果你使用 for(i...) 风格的循环。为了清楚起见,我将添加完整的循环:

for(var i=0;i<imageNameArray.length;i++)
{
    $('.listImage').append(imageNameArray[i]+ '<br/>');
}

为了帮助您进一步找出可能导致仅显示一个 img 名称的问题的原因,请在循环开始之前添加:console.log(imageArrayName);看看你的控制台。数组是否包含 1 个以上的元素?它说什么?当你这样做的时候,也尝试添加这一行:console.log((imageArray instanceof Array ? 'for' : 'for-in')); .将此行添加到您发布的 JavaScript 函数中的任何位置,但要在循环之外以避免使您的控制台过于困惑...

告诉我你发现了什么

关于php - 为什么每次都附加数字 0 和 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10339391/

相关文章:

php - 使用 angularjs 和 json 使用 $http 在浮点图上绘制数据

php - 如何仅使用 php 以我的表单返回结果?

php - Yii 防止刷新时将上传文件中的数据重新插入数据库

javascript - 基于视口(viewport)高度的动态高度

javascript - ajax 调用后使用 php 变量

javascript - 使用 json 构建下拉列表

php - 在给定初始经纬度、距离和方位角的情况下,在 php 中查找经纬度点

javascript - 将 localStorage 数据发送到 PHP

javascript - 如何使用 Javascript 更改具有公共(public)标识符的所有元素的 CSS?

jquery - 对 Spring MVC Controller 的 AJAX POST 请求不起作用