2013-03-13 39 views
0

我想使用AJAX和HTML5處理從客戶端計算機上的文件上傳到服務器上的文件夾。代碼從未執行,沒有得到任何錯誤

現在下面的alert消息除了success函數永遠不會執行,我不知道爲什麼。我沒有收到任何JS錯誤。 php腳本和保存文件的文件夾都被授予完全的讀/寫權限。

我很難在沒有看到任何錯誤的情況下使其工作。

我很感謝任何幫助確定這個問題的原因,並獲得一些錯誤或至少警報消息執行。

非常感謝提前!

JQuery的

$.ajax({ 
     url: 'upload.php', //server script to process data 
     type: 'POST', 
     xhr: function() { // custom xhr 
      myXhr = $.ajaxSettings.xhr(); 
      if(myXhr.upload){ // check if upload property exists 
       myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload 
      } 
      return myXhr; 
     }, 
     //Ajax events 
     success: function(data){ 
      alert("OK"); 
      $('body').html(data); 
     }, 
     // Form data 
     data: formData, 
     //Options to tell JQuery not to process data or worry about content-type 
     cache: false, 
     contentType: false, 
     processData: false 

    }); 

HTML

<form enctype="multipart/form-data"> 
    <input name="file" type="file" /> 
    <input type="button" value="Upload" /> 
    </form> 
    <progress></progress> 

upload.php的

<?php 
if ($_FILES["file"]["name"] != NULL) { 
    if (file_exists("uploads/" . $_FILES["file"]["name"])) 
    echo $_FILES["file"]["name"] . " already exists. "; 
    else 
    move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/" . $_FILES["file"]["name"]); 
} 


?> 
+0

稍微不相關,嘗試使用關鍵字「調試器;」在Chrome瀏覽器旁邊的JS文件中。當它擊中關鍵字並讓你看到發生了什麼時,它會停止執行。否則在診斷XHR時,complete:function(){}鉤子可能是另一個有用的點,因爲總是調用complete。 – David 2013-03-13 00:39:50

+0

您沒有錯誤處理程序。按照文檔http://api.jquery.com/jQuery.ajax/中的描述創建一個'error:function(){}'錯誤回調並且始終在打開瀏覽器控制檯的情況下開發JavaScript。觀看XRH並在瀏覽器開發工具的網絡部分檢查其響應。 – 2013-03-13 00:39:56

+0

您是否嘗試過使用開發人員工具進行調試? – j08691 2013-03-13 00:40:56

回答

1

添加錯誤處理爲好。

$.ajax({ 
    success: function(data){ 
    console.log("OK"); 
    $('body').html(data); 
    }, 
    error: function(xhr, textStatus, errorThrown){ 
    console.log('An error has occurred!'); 
    console.log(textStatus); 
    console.log(errorThrown); 
    } 
}); 

JavaScript不會爲失敗的ajax請求拋出任何錯誤,所以你需要自己去捕捉它們。

+0

+1,感謝您的回覆!我收到以下錯誤:'對象{readyState:0,getResponseHeader:函數,getAllResponseHeaders:函數,setRequestHeader:函數,overrideMimeType:函數...}',任何想法可能會導致此? – AnchovyLegend 2013-03-13 00:46:20

相關問題