【问题标题】:Ajax function not receiving response from serverAjax 函数未收到来自服务器的响应
【发布时间】:2015-05-29 13:11:17
【问题描述】:

基本上,我正在与上传者 (dropzone.js) 合作,并将其整合到我的网站中。将文件添加到服务器工作正常,但是我无法删除它们。我的 JavaScript:

$(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 时,我收到以下错误:

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

第 31 行是这样的:if (data == "success") {

所以它好一点,但我仍然不确定如何继续。

【问题讨论】:

  • 控制台日志或服务器端有错误信息吗?
  • 请使用error,complete方法并放一些日志来检查错误,如果到达错误块有一些错误,两种情况都会调用complete
  • @MatthewNorth 在客户端和服务器端都没有错误,这几乎就像在下面的行$.ajax({(第 16 行代码 sn-p 中的第 16 行)下面没有处理 Ajax )
  • 尝试将类型:“POST”更改为方法:“POST”,看看是否有帮助
  • 另外,您可以尝试将 data: file.name 更改为 data: JSON.stringify({ filename: file.name }),并添加 contentType: "application/json; charset=utf-8",

标签: javascript jquery asp.net ajax vb.net


【解决方案1】:

将您的 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);
             }
         }
    });

【讨论】:

  • 我已经完成了这些更改,我发现另一个更改 function(response) 需要是 function(data)。无论出于何种原因,我的 DeleteFile 函数都没有被调用。知道为什么会这样吗?感谢您迄今为止的帮助。
  • 你能检查浏览器上的控制台日志并检查正在调用的 url 吗?使用 AJAX 调用,其他一切看起来都正确,
  • Request URL: http://localhost:14470/WebSite2/uploadHandler.ashx/DeleteFile 返回状态也正常。我的处理程序一切正常吗?
  • .net 仍然不知道如何处理 json 结构,当你找回它时,你不能只调用 "Server.MapPath("~/serverFiles/"), filename" 并期望它得到正确的数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-20
  • 2015-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多