我正在尝试按照此答案使用Jquery通过Ajax和PHP上传文件,但是它不起作用。
这是我的HTML表单的一部分(我正在使用引导程序):
<form role="form" enctype="multipart/form-data" id="edit-company" method="POST">
<div class="form-group">
<div class="row">
<div class="col-md-6">
<div class="row">
<div class="col-md-12 form-group">
<label for="field-name-company">Name:</label> <input id="field-name-company" name="nameCompany" class="form-control" type="text"/>
</div>
</div>
<div class="row">
<div class="col-md-12 form-group">
<label for="field-street-social-emp">Street</label> <input id="field-street-social-emp" name="streetCompany" class="form-control" type="text"/>
</div>
</div>
<div class="col-md-12 form-group">
<div class="row">
<label for="foto-empresa">Foto/Logo:</label>
<div class="form-group">
<input type="file" name="fotoEmpresa"/>
</div>
<button class="btn btn-success pull-right" type="submit" value="Confirm" id="submit-edit-company"><span class="glyphicon glyphicon-ok"></span> Update</button>
</div>
</div>
</div>
</div>
</div>
</form>
这是我的jquery片段:
$('#submit-edit-company').click(function(e) {
e.preventDefault();
var formToSubmit = $(this).parents('form#edit-company');
var dataToSend = formToSubmit.serialize();
var fileInput = formToSubmit.find('input[type="file"]')[0];
var fileData = fileInput.attr('files')[0];
console.log(fileData);
$.ajax({
url: 'app/editCompanyService',
data: dataToSend,
type: 'POST',
dataType: 'JSON',
contentType: false,
cache: false,
processData:false,
beforeSend: function () {},
success: function (return) {},
error: function(jqXHR, textStatus, errorThrown) {
console.log("Error... " + textStatus + " " + errorThrown);
}
当我调试javascript和监视时fileInput
,我可以看到像这样的文件Files: FilesList[1] 0: File...
,但是脚本只是停止并且在控制台中不显示任何内容,甚至错误。
$_FILES
PHP中的var是空的。(在指出所有配置这个帖子已经选中)。
也尝试了fileInput.prop('files')[0];
和new FormData(formToSubmit)
,但是我遇到了同样的问题。
我做错了什么?
尽管不是相同的问题,但此SO POST的答案(通过@u_mulder在问题注释中链接)解决了我的问题。
这是功能代码:
$('#submit-edit-company').click(function(e) {
e.preventDefault();
var formToSubmit = $(this).parents('form#edit-company');
var dataToSend = new FormData(formToSubmit[0]);
var fileInput = formToSubmit.find('input[type="file"]')[0];
var fileData = fileInput.attr('files')[0];
console.log(fileData);
$.ajax({
url: 'app/editCompanyService',
data: dataToSend,
type: 'POST',
dataType: 'JSON',
contentType: false,
cache: false,
processData:false,
beforeSend: function () {},
success: function (return) {},
error: function(jqXHR, textStatus, errorThrown) {
console.log("Error... " + textStatus + " " + errorThrown);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句