我尝试使用 jQuery.ajax
提交带有文件的表单。谷歌说我应该使用 FormData
它会自动将文件和所有输入编码到我可以通过 XHR 发送的一个对象中。
那么, FormData
对象是空的。它在调试器和服务器端都是空的。我找不到错误。这是代码。浏览器是 Firefox 27。
<form method="post" action="" enctype="multipart/form-data" id="generate_params">
<input type="hidden" name="id" value="1">
<input type="hidden" name="action" value="AJAX_BANNERS_GENERATE">
</form>
<div>
<p>
<label>
Image: <input type="file" name="bg_image[]" form="generate_params" required>
</label>
</p>
</div>
<input type="submit" form="generate_params">
<script>
$(document).ready(function () {
$("#generate_params").submit(function (e) {
var data = new FormData(this);
$.ajax({
data: data,
method: "POST",
success: function (url) {
alert("ok");
},
cache: false,
contentType: false,
processData: false
});
e.preventDefault();
return false;
});
});
</script>
在 Network
选项卡上的 Firebug Params
部分我看到了以下行:
[object FormData]: "undefined"
?严重地?
我什至无法发送的愚蠢的东西 FormData
从头开始创建的对象。像这样
var data = new FormData();
data.append("test", {value: 0}); // still empty
原文由 efpies 发布,翻译遵循 CC BY-SA 4.0 许可协议
结果,我使用的是不支持
FormData
的 jQuery 1.8.1。图书馆更新解决了这个问题。