【发布时间】:2016-11-18 23:44:20
【问题描述】:
我知道这个问题可能是重复的,但我已经验证了他们的每一种方法,但似乎都没有。
基本上,我的问题是 FormData();对我不起作用,无论是使用 FormData(myform) 创建实例还是仅使用附加的独立 formdata() 创建实例,它都没有做任何事情。
这是我正在测试的代码:
HTML
<form id="form">
<input type="hidden" name="id" id="id" value="1">
<input type="text" name="title" id="title">
<select name="category" id="category">
<option value="1">1</option>
</select>
<textarea name="desc" id="desc"></textarea>
<input type="file" name="cover" id="cover">
<div id="content">
Hello World
</div>
<input type="submit" name="submit" value="Submit">
</form>
<script src="js/jquery-2.2.1.js"></script>
<script src="js/now.js"></script>
JAVASCRIPT (now.js)
$('#form').on('submit', function(e){
e.preventDefault();
var myform = e.target;
var inputfile = document.querySelector('#cover');
var formData = new FormData(myform);
formData.append('file', inputfile.files[0]);
//formData.append('cover', $('input[type=file]')[0].files[0]);
var xhttp = new XMLHttpRequest();
xhttp.open('POST', 'data.txt', true);
xhttp.send(formData);
});
我希望得到一些帮助。
PS。 Console.log(formData) 是一团糟,之后我也看不到任何东西,并且网络时间线运行,但没有输出。
谢谢大家,
【问题讨论】:
-
你用的是什么浏览器?
-
#cover元素是表单的一部分,因此已经在formData中。为什么要尝试将第一个文件附加到FormData? -
尝试将
enctype="multipart/form-data添加到您的表单中!!! -
@IsmailRBOUH 我正在使用 Chrome,并且我已将 enctype 添加到表单中。没有改变任何东西。
-
@Andreas 这是因为表单在某些情况下没有考虑 input type=file (如果不是全部,我还在学习)。无论它是否存在,我的 XML 请求都不会解析,FormData 也不会添加任何内容。
标签: javascript jquery html ajax forms