2015-05-29 3 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 

Что должно происходить: Когда ссылка удалить нажал на загруженном файле клиента отправляет на сервер POST по номеру Ajax. Сервер, чем удаляет файл с диска и отправляет клиенту сообщение о том, что это было успешным.

Это мой первый раз с использованием Ajax, что происходит? Почему сообщение не отправляется?

Edit: Когда я изменяю dataType: "json" к test я reeive следующее сообщение об ошибке:

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

Line 31 это: if (data == "success") {

Так его немного лучше, но я до сих пор не уверен, как поступить ,

+0

Любые сообщения об ошибках в журнале консоли или на стороне сервера? –

+1

используйте ошибки, полные методы и поместите некоторые журналы, чтобы проверить ошибку, если она достигает блока ошибок, там будет некоторая ошибка, полная будет вызвана в обоих случаях –

+0

@MatthewNorth никаких ошибок как на стороне клиента, так и на стороне сервера, его почти как если бы Ajax обрабатывался ниже следующей строки '$ .ajax ({' (строка 16 в фрагменте кода кулака) – errorreplicating

ответ

0

Объявление вашего веб-метода как общего (статического), например.

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 (response)' должно быть 'function (data)'. По какой-то причине моя функция DeleteFile не вызывается. Любая идея, почему это происходит? Спасибо за помощь до сих пор. – errorreplicating

+0

Можете ли вы проверить журнал консоли в браузере и проверить, какой URL-адрес вызывается? все остальное выглядит корректно с вызовом AJAX, –

+0

'Запрос URL: http: // localhost: 14470/WebSite2/uploadHandler.ashx/DeleteFile' возвращает статус в порядке. Все в порядке с моим обработчиком? – errorreplicating

Смежные вопросы