Javascript 使用formData上载文件返回未定义的文件数组

Javascript 使用formData上载文件返回未定义的文件数组,javascript,php,jquery,form-data,Javascript,Php,Jquery,Form Data,我从print\u r($\u POST)中得到了未定义,它发布在同一个php页面上 Array ( [file] => undefined ) 已编辑-添加了调用上载标题功能的部分 HTML <form enctype="multipart/form-data" id="banner_form" class="form-horizontal" role="form" action=""> <input type="hidden" name="MAX_FILE_SI

我从print\u r($\u POST)中得到了未定义,它发布在同一个php页面上

Array ( [file] => undefined )
已编辑-添加了调用上载标题功能的部分

HTML

<form enctype="multipart/form-data" id="banner_form" class="form-horizontal" role="form" action="">
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
  <input id="file" name="file" type="file" class="filestyle" accept="image/jpeg,image/gif,image/png">
</form>
json作为数据类型导致im从php端返回数组,没有发布额外的代码,因为im在文件上传部分已经遇到问题

PHP

if(isset($_POST['file'])) {
  print_r($_POST);
  exit();
}

我做错什么了吗

您的函数甚至没有被调用,因为您没有处理程序运行的提交按钮。 应该是这样的:

<form enctype="multipart/form-data" id="banner_form" class="form-horizontal" role="form" action="">
  <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
  <input id="file" name="file" type="file" class="filestyle" accept="image/jpeg,image/gif,image/png">
  <input type="submit" id="submit_btn"/>
</form>

您的JS中也有语法错误,不需要第二组
})
关闭单击处理程序

JSFiddle:

表单数据设置不正确,应为:

var form_data = new FormData( );
form_data.append('file', $('input[type=file]')[0].files[0]);
您确定ajax引用的url是正确的吗

为什么在您进行post而不是get时会出现查询参数(
?p=73

最后,试着通过


success:function(data){alert(JSON.stringify(data))},

您的error.log中是否有错误?没有错误,只有来自$\u post的未定义文件数组调用了
upload\u banner
form_data.append('file',$('input[type=file])[0].files[0])的用途是什么?为什么要将
dataType
设置为
“json”
?我们需要查看调用此
upload\u banner
函数的位置。upload\u banner是我的表单IDsorry为避免混淆,是的,我确实删除了额外关闭的处理程序。我有2张表格正在提交1)首先点击提交按钮,它将提交第一张表格2)第一张表格完成后,它将调用第二个函数upload_banner来提交第二张表格,这是图片上传。我有另一个文件,它的代码完全相同,可以提交两张表格,没有问题,唯一的区别是,另一个页面提交给另一个php文件,而不是它自己。不知道为什么,但似乎无法获得第二个表单。。对var form_data的更改=新FormData($(“#banner_form”);在将响应更改为jsonit之后,worksim仍然没有为file定义,它以{“file”响应:“undefined”}我确实在输入标记中定义了类型,如果你向后看,如果它在名称后面,那么试试这个
var form_data=new FormData()然后
形成数据。追加('file',$('input[type=file]')[0]。文件[0])
var form_data = new FormData( );
form_data.append('file', $('input[type=file]')[0].files[0]);