【发布时间】:2017-03-31 11:52:28
【问题描述】:
我有一个 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 文件进行处理。
为什么我会遇到这个问题?我该如何解决?
另外,作为解决方案的一部分,我想防止在单击提交按钮时刷新页面。
非常感谢!
【问题讨论】:
-
文件选择元素中的数据未序列化。api.jquery.com/serialize
-
“我希望提交按钮在单击时页面不会刷新”将事件传递给您的处理程序,然后将
e.preventDefault()传递给return false -
将此添加到您的 ajax
processData: false, // tell jQuery not to process the data contentType: false, // tell jQuery not to set contentType -
目前,页面无法加载...我同时添加了 processData: false 和 contentType: false,但现在这样做之后,没有任何内容被发布...甚至文本值也没有.. .
标签: javascript php jquery html