只有文本值被发布到php文件而不是文件

时间:2017-03-31 01:43:52

标签: javascript php jquery html

我有 HTML 表格的以下代码:

<form id="idForm" method="post" enctype="multipart/form-data">
    <input type="text" name="first" value="Bob" />
    <input type="text" name="middle" value="James" />
    <input type="text" name="last" value="Smith" />
    <input name="image" type="file" />
    <input type="submit" name="submit" value="Submit" />
</form>

以及表单所在同一页面上的以下 Javascript 代码。此外,此代码写在表单代码下面:

$("#idForm").submit(function() {
    alert("hi");
    var url = "submit.php"; 

    $.ajax({
        type: "POST",
        url: url,
        data: $("#idForm").serialize(),
        success: function(data) {
            alert(data);
        }
    });

    return false;
});

这是我用来查看表单数据是否正在发布的 PHP 代码:

if (isset($_FILES['image'])) {
    $image = $_FILES['image'];
    echo $image;
}

if (isset($_POST['first'])) {
    $name = $_POST['first'];
    echo $name;
}

使用上面的代码,好像附件没有被发送到PHP文件。只发送了值,因为当我使用Google Chrome开发工具检查元素时,它们会被回显。

我希望能够将文本值和文件发布到PHP文件中进行处理。

为什么我会遇到这个问题?我该如何解决?

此外,作为解决方案的一部分,我想阻止在单击提交按钮时刷新页面。

非常感谢!

1 个答案:

答案 0 :(得分:1)

不幸的是,输入[type ='file']无法通过.serialize()提交,您必须按formData进行操作。 您将在here

中找到一个非常好的formData示例