jQuery Ajax发布文件


jQuery Ajax post file

我试图通过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文件将无法正确执行。。。

谢谢你的帮助!

您没有将函数分配给successerror

您正在立即调用警报函数,然后分配其返回值。

您需要创建新的函数来分配给successerror

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/以获取更多示例。