2016-03-05 34 views
0

我這個小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

如果'success'處理程序沒有被打到,這意味着服務器端代碼沒有返回'200 OK '迴應。檢查控制檯的網絡選項卡,確切瞭解請求的響應,並希望確定錯誤的原因。 –

+0

沒有....在網絡中。 – DragonStyle

回答

0

所以,解決的辦法是包成功功能於其它功能。不要問我爲什麼。不要問我爲什麼男人必須花幾個小時來閱讀這些重要信息:

$('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 
} 
+0

我不知道這是如何回答的,因爲它在邏輯上與你已有的東西沒有什麼不同。我的猜測是你意外地解決了導致問題的代碼中的其他問題,但至少你解決了這個問題。 –

+0

嗯......我只是把我說的成功功能包裝起來,然後才能正常工作。 – DragonStyle

+0

我在你的問題的代碼中注意到的一件事是,'success'函數需要'evt'參數,但是嘗試使用'data'變量設置'html()'。這可能是最初的問題,但如果真的如此,那麼控制檯中至少會出現一個錯誤。 –

相關問題