【发布时间】:2015-05-21 06:29:47
【问题描述】:
我目前正在尝试解决一个问题。 我在一个页面上有多个表单,它们通过 ajax 异步发送到后端。
现在他们中的一些需要有一个不中断进程的文件上传,所以它也需要异步处理。
我正在尝试这样解决:
// Allgemein Submit
$allgSubmit.click(function(){
event.preventDefault();
var gehrKundennummer = $('#gehrKundennummer').val();
var kundenklasse = $("input[type='radio'][name='kundenklasse']:checked").val();
var lkw12t = $('#lkw12t').val();
var lkw3t = $('#lkw3t').val();
var autobus = $('#autobus').val();
var firmenname1 = $('#firmenname1').val();
var firmenname2 = $('#firmenname2').val();
var uidnummer = $('#uidnummer').val();
var peselregon = $('#peselregon').val();
var firmenart = $('#firmenart option:selected').val();
var strasse = $('#strasse').val();
var ort = $('#ort').val();
var plz = $('#plz').val();
var land = $('#land').val();
var fd = new FormData();
var file = fd.append('file', $('#allg_firmen_dok').get(0).files[0]);
var allgArray = {
'gehrKundennummer':gehrKundennummer,
'kundenklasse':kundenklasse,
'lkw12t':lkw12t,
'lkw3t':lkw3t,
'autobus':autobus,
'firmenname1':firmenname1,
'firmenname2':firmenname2,
'uidnummer':uidnummer,
'peselregon':peselregon,
'firmenart':firmenart,
'strasse':strasse,
'ort':ort,
'plz':plz,
'land':land,
'file':file
};
//var data = new FormData();
//jQuery.each(jQuery('#allg_firmen_dok')[0].files, function(i, file) {
// data.append('file-'+i, file);
//});
console.log(allgArray);
$.ajax({
url: "PATHTOFILE/logic/logic_update_client_allg.php",
type: "POST",
data: allgArray,
processData: false, // tell jQuery not to process the data
contentType: false,
success: function(allgArray){
alert(allgArray);
var allgSave = $('#allgSave');
allgSave.text('Aktualisieren erfolgreich!');
allgSave.toggle();
},
error: function(){
var allgSave = $('#allgSave');
allgSave.text('Aktualisieren fehlgeschlagen!');
allgSave.toggle();
}
});
});
数组的控制台日志正确返回除“文件”之外的所有值 它说未定义。
不知道怎么处理,有没有什么要求我遗漏的?
感谢您的帮助
编辑
var file = fd.append('file', $('#allg_firmen_dok').get(0).files[0]);
返回未定义
【问题讨论】:
-
在点击之前您是否将文件发送到您的路径?
-
我不太明白你的意思?操作流程如下: SUBMIT CLICK -> 获取所有输入字段的值 -> 获取FILE -> 放入数组 -> 发送到php
-
我认为
fd.append()执行正确,然后返回undefined。它只是将东西附加到fd。所以你将undefined分配给file变量。只需删除文件变量并继续使用 fd。 -
如果您使用的是 jquery 文件上传器,则在 add: 函数回调中获取数据,以便获取该数据并存储在全局变量中。我正在使用同样适用于我的东西.. stackoverflow.com/questions/30283970/…
-
@JeremyThille 我尝试将 fd 传递给数组,但即使在 fd 附加一些内容后, fd 仍然会产生结果:FormData {append: function}
标签: javascript php jquery ajax file-upload