【问题标题】:PHP $_FILES empty on loadPHP $_FILES 加载时为空
【发布时间】:2012-09-27 23:09:32
【问题描述】:

由于某种原因,我无法让 $_FILES 数组包含在我的表单中选择的上传。从我读到的表格看起来不错,并且所有其他变量都收到了。

每次我提交表单时,$_FILES 数组的 var_dump 都有 0 个条目。

对于这篇文章,为了简洁起见,我删除了其他字段,因为它们正在工作。

<form name="addFact" id="addFact" action="add_fact.php" method="post" enctype="multipart/form-data" onsubmit="return validateStatus();" >
    <input type="file" id="myImage" name="myImage" style="width:450px;"/><br />
</form>

重新加载后,我使用以下命令检查 $_FILES 数组:

echo "- Files - <br>\n";
echo "<pre>\n";
var_dump($_FILES);
echo "</pre>\n";

但每次结果都是空的:

文件: 数组(0){ }

更新 抱歉,没有意识到验证状态仍然存在..但这是检查是否提交表单的 JS

function validateStatus() {
    jQuery("#addFact").validationEngine({scroll: false});
    var valid = $("#addFact").validationEngine('validate');
    if (valid == true) {
        submitForm('addFact');
    }
    return false;
}

虽然我怀疑这是问题的一部分,因为表单成功提交,所有属性仍然设置,包括文件字段等。

哦 ..and 哈哈 .. 另一个函数 .. :) ... 这是 submt 表单函数:

function submitForm(formName,message) {
    $.ajax({
        data: $("#" + formName).serialize(),
        type: $("#" + formName).attr('method'),
        url: $("#" + formName).attr('action'),
        success: function(response) {
            $('#load_target').html(response);
        }
    });
    return false;
}

load_target 是索引页面上的 div,我正在使用 ajax 加载这个 php 文件。 - 希望现在一切都清楚了:)

此外,为了保护表单的任何不发布任何内容.. 这是帖子 var_dump 的结果

array(11) {
  ["action"]=>  string(4) "save"
  ["category"]=>  string(1) "3"
  ["startDate"]=>  string(10) "09-27-2012"
  ["expireDate"]=>  string(10) "11-27-2012"
  ["title"]=>  string(10) "Test Title"
  ["subtitle"]=>  string(10) "Test Title"
  ["include_image"]=>  string(3) "yes"
  ["img_loc"]=>  string(4) "left"
  ["img_size"]=>  string(2) ".3"
  ["scroll"]=>  string(1) "1"
  ["fact_text"]=>  string(27) "there's something about her"
}

【问题讨论】:

  • 您在测试时是否真的在上传文件?如果输入字段留空,则 $_FILES 中的索引可能不存在。
  • “validateStatus()”在做什么?它会操纵那个领域吗?
  • 验证所有正在填充的字段(即必填字段)的状态检查,然后如果一切正常则提交表单,对此感到抱歉。
  • 是的,我正在表单字段中选择一个文件并提交表单...虽然 tie $_FILES 似乎没有反映出来。
  • 来自jQuery serialize documentation:“来自文件选择元素的数据未序列化。”

标签: php


【解决方案1】:

如果您使用的是 jquery mobile,请将 data-ajax="false" 添加到表单标签

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-21
    • 2015-08-22
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多