Javascript 使用Jquery上载文件时出错&;AJAX
我正在尝试使用jQuery和AJAX上传文件。我使用了HTML5支持的Javascript 使用Jquery上载文件时出错&;AJAX,javascript,jquery,ajax,form-data,Javascript,Jquery,Ajax,Form Data,我正在尝试使用jQuery和AJAX上传文件。我使用了HTML5支持的FormData对象。我正在使用IE11。下面是我的代码: <form id="tradeForm" method="post" action="/trade.action?method=addTrade" enctype="multipart/form-data"> Trade Type : <input type="text" id="tradeType" name="tradeType">
FormData
对象。我正在使用IE11。下面是我的代码:
<form id="tradeForm" method="post" action="/trade.action?method=addTrade" enctype="multipart/form-data">
Trade Type : <input type="text" id="tradeType" name="tradeType">
Trade Document : <input type="file" id="attachedFile" name="attachment" size="40">
</form>
还可以使用$.ajax
$("#tradeForm").submit(function(event){
event.preventDefault();
var form = $(this);
var formData = new FormData(form);
url = form.attr("action");
$.ajax({
url: url,
type: "POST",
data: formData,
processData: false, // tell jQuery not to process the data
contentType: false // tell jQuery not to set contentType
}).done(function(data) {
console.log(data);
});
});
我得到以下错误:
参数不是可选的
当使用$.post
方法时
SCRIPT7002:XMLHttpRequest:网络错误0x2ef3,由于错误00002ef3,无法完成操作
当使用
$.ajax
方法时。如何解决这些错误?构造函数需要一个doElement,而不是jQuery对象,因此需要修改FormData()
定义。试试这个:
$("#tradeForm").submit(function(event){
event.preventDefault();
var $form = $(this);
var formData = new FormData($form[0]); // note [0] here
url = $form.prop("action");
$.ajax({
url: url,
type: "POST",
data: formData,
processData: false,
contentType: false
}).done(function(data) {
console.log(data);
});
});
更改此项:
var formData = new FormData(form);
到
因为FormData需要表单,所以DOM元素
this
不是jQuery对象$(this)
将表单变量更改为:
var form = document.getElementById('tradeForm');
url = $(form).attr("action");
设置
contentType:“内容类型:多部分/表单数据”代码>我找到了问题的解决方案。以下是所做的更改:
将DOM元素传递给FormData构造函数而不是Jquery对象。
var formData=newformdata(document.getElementById(“tradeForm”)
从html中的表单中删除属性-enctype=“multipart/form data”。
否则将无法在服务器端读取表单数据
使用正确的服务器URL(在我的例子中,URL是错误的)。错误消息-SCRIPT7002:XMLHttpRequest:networkerror 0x2ef3由于错误00002ef3而无法完成操作。这是误导
您是否尝试使用serialize()函数?var formData=form.serialize()@cralfaro OP正在发送一个文件,因此serialize()在这里不适用。我仍然收到相同的错误。当我记录formData时,我会在控制台中看到[object formData]。我使用的是jQuery2.1.4版本。我仍然会遇到同样的错误。当我记录formData时,我在控制台中看到[object formData],更新var form=document.getElementById('tradeForm')后,您的站点是否有ssl;我遇到错误-对象不支持属性或方法“attr”更改url=form.getAttribute(“操作”)代码>“attr”错误已解决,但获取网络错误0x2ef3。我已经在本地服务器上托管了我的应用程序。本地运行的应用程序需要SSL吗?
var form = document.getElementById('tradeForm');
url = $(form).attr("action");