$ .ajax成功处理程序未被调用

时间:2016-03-05 12:20:56

标签: jquery upload

我有这个小的AJAX脚本来处理文件上传:

$('body').on('change', '#uploadFile', function() {
    // Post-Data
    var data = new FormData();
    data.append('file', this.files[0]);
    //data.append('foo', 1);

    // Ajax-Call
    $.ajax({
        url: "uploadUserpic.php",
        data: data,
        type: "POST",
        processData: false,
        contentType: false,
        success: function(evt) {
            $("#message").html(data);
        }
    });
});

文件上传本身有效,但未显示成功消息(#message中)。为什么是这样?以下是上传的小脚PHP脚本:

$uploaddir = '../data/';
$uploadfile = $uploaddir . basename($_FILES['file']['name']);

if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadfile)) {
    echo "File Upload OK.\n";
} else {
    echo "Something went wrong\n";
}

1 个答案:

答案 0 :(得分:0)

因此,解决方案是将success函数包装到另一个函数中。不要问我为什么。不要问我为什么一个人必须花上几个小时才能阅读这些重要信息:

  $('body').on('change', '#uploadFile', function() {

// Post-Data
var data = new FormData();
data.append('file', this.files[0]);
//data.append('foo', 1);

// Ajax-Call
$.ajax({
    url: "uploadUserpic.php",
    data: data,
    type: "POST",
    processData: false,
    contentType: false,
    success : handleData 
});
});

function handleData(data) {
    $("#message").html(data);
//do some stuff
}