我试图通过ajax将上传的文件发布到php。
HTML:
<form id="uploadForm" name="uploadForm" action="#" enctype="multipart/form-data">
<input id="name" name="name" class="form-control" type="text" />
<input id="csv" name="csv" type="file" />
<input id="CSVUpload" type="submit" class="btn btn-default" name="Submit" value="Hochladen" />
JS
$("#uploadForm").submit(function () {
var formData = new FormData();
formData.append( 'csv', $( '#csv' )[0].files[0] );
formData.append( 'name', $( '#name'));
jQuery.ajax({
url: "../lib/import.php",
data: formData,
type: "POST",
success: alert('erfolgreich'),
error: alert('Fehler'),
cache: false,
contentType: false,
mimeType: 'multipart/form-data',
processData: false
});
});
然后我尝试用PHP获取表单数据:
$_FILES['csv']
$_POST['name']
但是Ajax调用以成功和错误完成。。。我很困惑。。。PHP文件将无法正确执行。。。
谢谢你的帮助!
您没有将函数分配给success
或error
。
您正在立即调用警报函数,然后分配其返回值。
您需要创建新的函数来分配给success
和error
。
success: function () { alert('erfolgreich') },
error: function () { alert('Fehler') },
您也将函数作为提交处理程序调用,但不会阻止正常的表单提交。因此,浏览器将在处理对Ajax请求的响应之前加载一个新页面。
$("#uploadForm").submit(function (event) {
event.preventDefault();
试着用你的成功和失败代码重组你的AJAX调用,如下所示:
$.post('../lib/import.php', formData).done(function() {
console.log('done');
}).fail(function() {
console.log('error');
});
请参阅http://api.jquery.com/jquery.post/以获取更多示例。