2015-05-29 127 views
0

本質上,我正在使用上傳器(dropzone.js)並將其合併到我的網站中。添加文件到服務器工作正常,但我有刪除它們的麻煩。我的javascript:Ajax功能沒有收到來自服務器的響應

$(document).ready(function() { 
    Dropzone.autoDiscover = true; 
    $("#dZUpload").dropzone({ 
     url: "uploadHandler.ashx", 
     addRemoveLinks: true, 
     success: function (file, response) { 
      file.previewElement.classList.add("dz-success"); 
      console.log("Successfully uploaded: " + file.name); 
     }, 
     error: function (file, response) { 
      file.previewElement.classList.add("dz-error"); 
     }, 
     init: function() { 
      var dZUpload = this; 
      this.on("removedfile", function (file) { 
       $.ajax({ 
        type: "POST", 
        url: "uploadHandler.ashx/DeleteFile", 
        data: { filename: file.name }, 
        dataType: "json", 
        success: function (repsonse) { 
         if (data == "success") { 
          alert("Successfully deleted."); 
          this.removeFile(file); 
         } 
         else { 
          alert("Error deleting file."); 
          this.removeFile(file); 
         } 
        } 
       }); 
      }); 
     } 

    }); 
}); 

,這是對我的服務器端處理的deleteFile功能代碼:

<System.Web.Services.WebMethod()> _ 
Public Function DeleteFile(filename As String) As String 
    Try 
     Dim Yes As String = "success" 
     System.IO.File.Delete(Path.Combine(HttpContext.Current.Server.MapPath("~/serverFiles/"), filename)) 
     Return Yes 
    Catch ex As Exception 
     Dim No As String = "failure" 
     Return No 
    End Try 
End Function 

什麼應該發生:當刪除鏈接被點擊上載的文件,客戶端通過Ajax發送POST到服務器。服務器將文件從磁盤上刪除,並向客戶端發送一條消息,說這是成功的。

這是我第一次使用Ajax,發生了什麼?爲什麼不發送消息?

編輯:當我改變dataType: "json"test我reeive以下錯誤:

Uncaught ReferenceError: data is not defined 
$.ajax.success @ fileUploader.aspx:31 

第31行是這樣的:if (data == "success") {

所以它的好一點,但我仍然不知道如何進行。

+0

在控制檯日誌或服務器端的任何錯誤信息? –

+1

請使用錯誤,完整的方法,並把一些日誌來檢查錯誤,如果它到達錯誤塊有一些錯誤,完成將被調用的情況下 –

+0

@MatthewNorth在客戶端和服務器端都沒有錯誤,它的就好像Ajax沒有在下面一行'$ .ajax({'(第一個代碼片段中的第16行)' – errorreplicating

回答

0

聲明您的Web方法爲共享(靜態)例如

Public Shared Function DeleteFile(filename As String) As String 

,然後修改您的AJAX調用:

var data = { filename: file.name } 
    $.ajax({ 
     method: "POST", 
     url: "uploadHandler.ashx/DeleteFile", 
     data: JSON.stringify(data), 
     dataType: "json", 
     contentType: "application/json; charset=utf-8", 
     success: function (repsonse) { 
      if (data == "success") { 
       alert("Successfully deleted."); 
       this.removeFile(file); 
      } 
      else { 
       alert("Error deleting file."); 
       this.removeFile(file); 
      } 
     } 
    }); 
+1

我已經做了這些改變,並且我發現另一個'函數(響應)'變更需要'function(data)'。無論出於何種原因,我的DeleteFile函數沒有被調用。任何想法爲什麼發生這種情況?感謝你目前的幫助。 – errorreplicating

+0

您可以檢查瀏覽器上的控制檯日誌,並檢查正在調用哪個網址?在AJAX調用 –

+0

'請求URL:http:// localhost:14470/WebSite2/uploadHandler.ashx/DeleteFile'返回狀態也OK。我的處理程序一切正常嗎? – errorreplicating

相關問題