我试图附加文件到FormData
来处理通过AJAX上传的文件,并在阅读并继续查找解决方案而无需使用外部插件我发现this,我想用我的代码,所以我做了这个:使用File API读取文件,使用File API显示“TypeError:e is undefined”
$(function() {
$('.smart-form').on('submit', function (e)
{
var files;
e.stopPropagation(); // Stop stuff happening
e.preventDefault(); // Totally stop stuff happening
if ($(".state-error").length < 1) {
// Create a formdata object and add the files
var data = new FormData();
// Check for the various File API support.
if (window.File && window.FileReader && window.FileList && window.Blob) {
// Grab the files and set them to our variable
files = e.target.files;
$.each(files, function (key, value)
{
data.append(key, value);
});
}
// Create a jQuery object from the form
$form = $(e.target);
// Serialize the form data
var formData = $form.serializeArray();
$.ajax({
async: false,
url: '{{ path('update-product', {'id': id}) }}',
type: 'POST',
data: formData,
cache: false,
success: function (data, textStatus, jqXHR)
{
if (typeof data.error === 'undefined')
{
// Success so call function to process the form
console.log("SUCCESS");
}
else
{
console.log("ERRORS");
}
},
error: function (jqXHR, textStatus, errorThrown)
{
// Handle errors here
console.log("ERRORS");
},
complete: function()
{
// STOP LOADING SPINNER
}
});
}
});
});
但我在Firebug
控制台收到此错误:
TypeError: e is undefined
而且我不ABL e找到我的错误或发生了什么。 Here是一个带有测试代码的小提琴,可以帮助我并告诉我我做错了什么吗?
更新
的错误不是在的jsfiddle一样的,如果你在Firebug
控制台看看错误trown是这个,而不是:
TypeError: obj is undefined
length = obj.length,