我一直收到一个未定义的索引通知

时间:2012-04-11 12:11:53

标签: php javascript html undefined-index

我有一个包含文件输入的表单:

 var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='startImageUpload(this);' class='imageuploadform' ><label>" + 
    "Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><label class='imagelbl'>" + 
    "<input type='submit' name='submitImageBtn' class='sbtn' value='Upload' /></label>" + +
    "</p> <iframe class='upload_target' name='upload_target' src='#' style='wclassth:0;height:0;border:0px;solclass #fff;'></iframe></form>");

这链接到上传文件的php脚本:

<?php

   $destination_path = str_replace("//", "/", $_SERVER['DOCUMENT_ROOT']."/")."ImageFiles";

   $result = 0;

   $target_path = $destination_path . basename( $_FILES['fileImage']['name']);

   if(move_uploaded_file($_FILES['fileImage']['tmp_name'], $target_path)) {
      $result = 1;
   }

   sleep(1);
?>

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

问题是,在php脚本中,它声明我有一个未定义的索引,无论它在哪里声明&#39; fileImage&#39;在PHP脚本中。但我不知道为什么我在表格&#39; fileImage&#39;中的名字属性中提到我有未定义的索引。为什么它说明我有一个未定义的索引&#39; fileImage&#39;在PHP脚本中?

这是一个指向应用程序的链接,您可以在其中追加包含文件输入的行,您可以测试它并自行查看,但是在上传过程中它会一直说错误。 application

2 个答案:

答案 0 :(得分:1)

导致此错误的原因可能有很多,但实际原因是$_FILES数组没有字符串索引'fileImage'

为了更好地查看哪些索引可用,您可以执行以下操作:

var_dump(array_keys($_FILES));

另请参阅array_keysvar_dump

可能以下(在此问题中未记录的javascript代码)正在破坏表单中的内容或数据:

onsubmit='startImageUpload(this);'

答案 1 :(得分:0)

之前我遇到过同样的问题,这是因为我的ajax / javascript代码。作为测试,尝试在没有javascript的情况下发送表单。通过这种方式,您将知道问题的确切位置。如果错误消失,您的问题可能是javascript。

我从来没有真正得到使用ajax上传文件的正确解决方案。我通过将表单发送到iframe然后在加载后收集反馈来解决问题。

我会在表单标记上执行以下操作:<form action="..." target="myframe">。 使用name="myframe"onload="getResults()"创建一个框架 这很模糊,但我希望它能给你一个想法。

使用onload时要小心,因为它会发射两次。当页面第一次完成加载,以及表单完成提交时。

我希望我在这里没有完全误解你的观点。