我正在使用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'),
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
});
但是我得到了这个:
获取http://localhost/EOSS2/request.php?[object%20Object] 404(未找到)
当我删除processData: false
和contentType: false
时,我收到以下错误:
未捕获的TypeError:非法调用
我该怎么办?
答案 0 :(得分:2)
这里有两个问题。首先,您的错误消息表明您正在发送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
});
});