Javascript FormData获取未捕获类型错误
我正在使用jQuery通过AJAX提交表单。我有以下代码:Javascript FormData获取未捕获类型错误,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在使用jQuery通过AJAX提交表单。我有以下代码: $("#myForm-form").on("submit", function(event) { event.preventDefault(); var formData = new FormData($(this)[0]); $.ajax({ url: $(this).attr('action'), type: $(this).attr('method'), da
$("#myForm-form").on("submit", function(event) {
event.preventDefault();
var formData = new FormData($(this)[0]);
$.ajax({
url: $(this).attr('action'),
type: $(this).attr('method'),
data: {
'eoss': 'indexEOSS',
'form': 'myForm',
'values': createJSON(),
'formData': formData
},
success: function(data) {
console.log(data);
eval(data);
myFormForm(data);
},
processData: false,
contentType: false
});
return false
});
但我得到的是:
获取404(未找到)
当我删除processData:false
和contentType:false
时,我得到以下错误:
未捕获类型错误:非法调用
我该怎么办?这里有两个问题。首先,错误消息表明您正在发送GET请求,该请求不适用于
FormData
。在这种情况下,使用POST似乎最适用
其次,您不能在对象中发送FormData
,因为jQuery将尝试对其进行URL编码,这将导致问题。而是使用append()
方法向FormData
对象添加信息。试试这个:
$("#myForm-form").on("submit", function(e) {
e.preventDefault();
var $form = $(this);
var formData = new FormData($form[0]);
formData.append('eoss', 'indexEOSS');
formData.append('form', 'myForm');
formData.append('values', createJSON());
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'), // change the attribute in HTML or hardcode to 'post'
data: formData,
success: function(data) {
console.log(data);
// eval(data); < never, ever use eval()
myFormForm(data);
},
processData: false,
contentType: false
});
});
$(“#我的表单”)。关于(“提交”,函数(e){
e、 预防默认值();
var$form=$(此);
var formData=新formData($form[0]);
append('eoss','indexEOSS');
append('form','myForm');
append('values',createJSON());
$.ajax({
url:$form.attr('action'),
类型:$form.attr('method'),//将HTML或硬代码中的属性更改为'post'
数据:formData,
成功:功能(数据){
控制台日志(数据);
//eval(数据);<永远不要使用eval()
myFormForm(数据);
},
processData:false,
contentType:false
});
});
它应该是一个POST请求。为什么?无法获取请求?@durisvk否,当处理FormData
时,您不能使用gett。非常感谢,这个答案非常有用,现在可以使用了:)再次感谢:)没问题,很高兴能提供帮助