未捕获的TypeError:无法读取未定义的属性“0”

我一直得到这个奇怪的错误,我只是想不出来

这是我目前的代码:

function addBackground() { var penguin_id = getPenguinID(); var file = $('#image_form')[0].files[0]; console.log('Image Getting Uploaded'); var formData = new FormData(); formData.append('file', file); $.ajax({ url: "custBG.php", type: "POST", data: formData, cache: false, contentType: false, processData: false, mimeType: 'multipart/form-data' }).done(function(data) { if (data.status == 0) { console.log('Image Has Been Uploaded'); addBGItem(70000 + penguin_id); } else { console.log(data.message); } }); } 

这是表格

 
your image
Upload Image

我不确定是什么,但任何人都可以帮我解决问题。

在jQuery中,使用id选择器(例如$('#image_form') )只会产生第一个结果,因此不需要它旁边的[0] (忘了这一点,一个id选择器总是会产生一个集合,无论有多少项目 – 感谢Leo提出它。)此外,它没有属性files ,这将产生另一个错误。

你想在这里实现什么?

而不是$('#image_form')[0].files[0]; 试试$('#image_form').prop('files')[0]; 它对我有用。

你的问题在于我相信的files[0] 。 也许你想在输入字段中获取值? 你正在获取公司的jquery集合,其中files属性未定义。 $("#image_form").find("input").val()应该给你输入框的值,尽管在处理表单时可能有更合适的方法